鱼C论坛

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

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

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

        for b in range(a+1, 500):
            c = 1000 - a - b
            if (a*a + b*b) == c*c:
                print(a, b, c)
                found = True
                break
        if found:
            break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-4 01:27:42 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-19 19:57:20 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-29 19:53:50 | 显示全部楼层
111
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

运行时间0.018ms
枚举范围优化
Ulong test8 ()
{
    for(int a=150;a<500;a++)
    {
      for(int b=150;b<500-a/2;b++)
      {
        int c=1000-b-a;
        if((c*c-a*a-b*b)==0)
        {
          return a*b*c;
        }

      }
    }
    return 0;
}
int main (int argc, char *argv[])
{
  auto res = test8();
  std::cout << res << std::endl;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-4 15:20:36 | 显示全部楼层
真不错,学到这里受益良多
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-12 17:26:00 | 显示全部楼层
想看优化
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-20 15:55:39 | 显示全部楼层
11
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-8 10:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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