python_zhu 发表于 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

liangxixin 发表于 2023-8-4 01:27:42

1

nkysp 发表于 2023-8-19 19:57:20

sharp46 发表于 2023-11-29 19:53:50

111

salt_eto 发表于 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;
}

hejiage 发表于 2024-1-4 15:20:36

真不错,学到这里受益良多

kalendd 发表于 2024-2-12 17:26:00

想看优化

Cyan_fox 发表于 2024-7-20 15:55:39

11
页: 1 [2]
查看完整版本: 题目9:找出唯一的满足a + b + c = 1000的毕达哥拉斯三元组