当前位置: 首页 > 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()

相关文章:

  • 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集成高德地图,同层渲染
  • 天河低价网站建设/友情链接什么意思
  • 视频上到什么地方可以做网站链接/重要新闻今天8条新闻
  • 人和做网站/无经验能做sem专员
  • 自己做网站详细流程/seo专员岗位职责
  • 怎样做自己的 优惠卷网站/智能识别图片
  • 购物网站源码/蜜雪冰城推广软文