欧拉工程第9题 找出唯一的满足a + b + c = 1000的毕达哥拉斯三元组{a, b, c}
2016-10-16 10:07
337 查看
题目
一个毕达哥拉斯三元组是一个包含三个自然数的集合,a<b<c,满足条件:a2+b2=c2例如:32+42=9+16=25=52
已知存在并且只存在一个毕达哥拉斯三元组满足条件a+b+c=1000。
找出该三元组中abc的乘积。
解题方法
此题的关键就是a,b和c的取值上界,c可以由a和b确定,所以只要计算a和b的上界即可。因为a<b<c,所以a<[10003],[N]代表取整运算,对于正数来说,即舍去小数部分,如[1.66]=1,对于负数来说,取整运算是获得不大于N的最大整数,如[−1.6]=−2。
又因为a<b<c,所以当a确定后,a<b<1000−a2。
c=1000−a−b
程序
public static void solve() { for (int a=1;a<333;a++) { for (int b=a+1;b<(1000-a)/2;b++){ int c = 1000-a-b; if (a*a+b*b==c*c){ System.out.println(a*b*c); break; } } } }
相关文章推荐
- 欧拉计划之题目9:找出唯一的满足a + b + c = 1000的毕达哥拉斯三元组{a, b, c}
- 找出唯一的满足a + b + c = 1000的毕达哥拉斯三元组{a, b, c}。
- 题目9:找出唯一的满足a + b + c = 1000的毕达哥拉斯三元组{a, b, c}。
- 欧拉工程第一题 找出1000以下的自然数中,属于3和5的倍数的数字之和。
- 欧拉工程第26题 找出小于1000的数字中令1/d拥有最长循环圈的数字d
- 1、欧拉工程第1题 找出1000以下自然数中3和5的倍数之和
- 1、欧拉工程第1题 找出1000以下自然数中3和5的倍数之和
- Java 欧拉工程 第二十六篇【 小于1000的数字中令1/d拥有最长循环圈的数字d】
- 欧拉工程第17题 用英文写出1到1000的所有数字需要多少个字母
- 欧拉工程第二题 在斐波拉契数列中找出4百万以下的项中值为偶数的项之和
- 欧拉工程第25题:1000-digit Fibonacci number
- 欧拉工程第27题 找出为连续数字产生最多质数的二次公式
- 欧拉工程第3题 找出一个合数的最大质数因子
- Java进阶之欧拉工程 第十七篇【用英文写出1到1000的所有数字需要多少个字母?】
- 欧拉工程第13题 找出100个50位数之和的前十位数字
- 欧拉工程第30题 找出所有能够写成各位数字5次方之和的数之和
- Java进阶之欧拉工程 第十八篇【 找出从三角形顶端走到底端的最大和】
- Java 欧拉工程 第三十篇【 找出所有能够写成各位数字5次方之和的数之和】
- 找出满足a+b+c=n(n为正整数)的所有毕达哥拉斯元组(a,b,c)【python实现,时间复杂度优化】
- 欧拉工程第14题 找出以100万以下的数字开始的最长序列