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

【蓝桥杯】算法笔记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.kler.cn/a/614395.html

相关文章:

  • 深入了解Linux内核:task_struct结构详解
  • 计算机视觉总结
  • Java.util.logging (JUL) 终极指南:从基础配置到高级玩法
  • CS2 DEMO导入blender(慢慢更新咯)
  • macOS Jdk1.8安装(目前主流版本的jdk)
  • AI大模型底层技术——LoRA微调
  • 嵌入式项目:基于QT与海思HI3861开发板设计的鸿蒙智能车
  • 第一篇:系统分析师首篇
  • 一场公关活动,如何做好媒体邀约?
  • linux基本命令(1)--linux下的打包命令 -- tar 和gzip
  • 中小型企业网络的搭建
  • 【MySQL篇】事务管理,事务的特性及深入理解隔离级别
  • 在Trae中设置Python解释器版本
  • AVL树剖析
  • unique原理
  • 群体智能优化算法-算术优化算法(Arithmetic Optimization Algorithm, AOA,含Matlab源代码)
  • EXCEL报错:无法共享此工作薄,因表包含excel表或xml映射的解决方法
  • JavaScript使用
  • 萝卜快跑“出海”中东,助力阿布扎比打造超大规模无人车队
  • Unity编辑器功能及拓展(2) —Gizmos编辑器绘制功能