当前位置: 首页 > news >正文

【蓝桥杯】算法笔记1

1.暴力枚举

给定一个正整数n,请找出所有满足a² + b² = n的整数对(a, b),其中a和b都是正整数,且a ≤ b。

输入格式:一个正整数n (1 ≤ n ≤ 10⁶)
输出格式:所有符合条件的(a, b)对,每行一对,按a的升序排列。如果没有符合条件的对,输出"No solution"。

问题分析:我们需要找到所有满足a² + b² = n的正整数对(a, b),其中a ≤ b。

枚举策略:由于a和b都是正整数且a ≤ b,a的最大可能值是√(n/2),因为如果a > √(n/2),那么a² > n/2,b² = n - a² < n/2 < a²,这将导致b < a,与a ≤ b矛盾。

算法选择:采用枚举算法,遍历a的所有可能取值,对于每个a,计算b² = n - a²,然后检查b是否为整数。

优化:在枚举a时,只需要枚举到√(n/2)即可,减少不必要的计算。

import math

def find_num(n):

    result=[]
    max_a=math.isqrt(n//2)  #计算n//2的整数平方根

    for a in range(1,max_a+1):
        remainder=n-a*a
        b=math.isqrt(remainder)

        if b*b==remainder and b>=a:
            result.append((a,b))

    return result

n=int(input("请输入一个整数:"))
pairs=find_num(n)

if not pairs:
    print("No solution")
else:
    for a,b in pairs:
        print(a,b)
input()
http://www.dtcms.com/a/95459.html

相关文章:

  • vue项目中播放ws(Websocket协议)视频流
  • AI时代的数据底座:火山引擎多模态数据湖的设计与实践
  • 英语不好,可以考取Oracle OCP认证吗?
  • 闭包、装饰器学习笔记(第二次学习)
  • 【老电脑翻新】华硕A456U(换电池+换固态+光驱换机械+重装系统+重装系统后开始菜单失灵问题解决)
  • 高质量思维链(CoT)数据助力Deepseek成为国产大模型之光
  • Maven 中 maven.test.skip 与skipTests 区别
  • 实战 | 基于 SpringBoot + UniApp 打造国际版打车系统:架构设计与性能优化全解析
  • 关于ArcGIS中加载影像数据,符号系统中渲染参数的解析
  • nccl的框架结构图 (来自deepseek)
  • QT学习笔记(进程与多线程)
  • 线程池详解:在SpringBoot中的最佳实践
  • 16个气象数据可视化网站整理分享
  • 安科瑞Acrel-2000ES储能能量管理为储能柜厂家赋能未来能源
  • 甘肃旅游服务平台+论文源码视频演示
  • 应用于汽车车灯电路中的电感产品选型及质量管控标准
  • ssh: connect to host github.com port 22: Connection timed out
  • 金融交易平台该如何选择服务器
  • WHAT - 程序员英语之美式发音学习系列(四)
  • 鸿蒙Flutter实战:20. Flutter集成高德地图,同层渲染
  • 老是忘记package.json,备忘一下 webpack 环境下 Vue Cli 和 Vite 命令行工具对比
  • SpringMVC请求和响应
  • 只出现一次的数字(js实现,LeetCode136)
  • Vue 中使用 ECharts
  • IntelliJIDEA中实现Spring Boot多实例运行:修改配置与批量启动详解
  • How to install vmware workstation pro on Linux mint 22
  • 在 spring tool suite 如何安装 lombok
  • 有关pip与conda的介绍
  • VMware Fusion 虚拟机Mac版 安装CentOS 7
  • TypeScript 静态类型检查:提升前端开发的可靠性与效率