鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: 欧拉计划

题目9:找出唯一的满足a + b + c = 1000的毕达哥拉斯三元组

[复制链接]
发表于 2023-7-14 17:06:14 | 显示全部楼层
原来的解答里 break只跳出了内层for循环,还可以加一个tag,找到后跳出外层循环
  1. def find_triplet():
  2.     found = False
  3.     for a in range(333):

  4.         for b in range(a+1, 500):
  5.             c = 1000 - a - b
  6.             if (a*a + b*b) == c*c:
  7.                 print(a, b, c)
  8.                 found = True
  9.                 break
  10.         if found:
  11.             break
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-4 01:27:42 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-8-19 19:57:20 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-11-29 19:53:50 | 显示全部楼层
111
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-1-2 10:49:33 | 显示全部楼层
本帖最后由 salt_eto 于 2024-1-2 10:52 编辑

运行时间0.018ms
枚举范围优化
  1. Ulong test8 ()
  2. {
  3.     for(int a=150;a<500;a++)
  4.     {
  5.       for(int b=150;b<500-a/2;b++)
  6.       {
  7.         int c=1000-b-a;
  8.         if((c*c-a*a-b*b)==0)
  9.         {
  10.           return a*b*c;
  11.         }

  12.       }
  13.     }
  14.     return 0;
  15. }
  16. int main (int argc, char *argv[])
  17. {
  18.   auto res = test8();
  19.   std::cout << res << std::endl;
  20. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-4 15:20:36 | 显示全部楼层
真不错,学到这里受益良多
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-12 17:26:00 | 显示全部楼层
想看优化
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-20 15:55:39 | 显示全部楼层
11
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-19 09:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表