题目描述
XP最喜欢的图形是三角形,最近他在研究直角三角形,他想到这么一个问题,如果三边长{a,b,c}均为整数的直角三角形周长为p,(a<=b<=c)当p = 120时,恰好存在三个不同的解:{a=20,b=48,c=52}, {a=24,b=45,c=51}, {a=30,b=40,c=50}。现在给定一个p求不同的解的个数。(p<=1000)
输入
单组输入数据
p
输出
输出一行结果
样例输入
120
样例输出
3
代码实现
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()) {
int p = sc.nextInt();
int a,b,c;
int s = 0;
//两边之和大于第三边
//所以不会有任何一条边大于周长一半
for(a=1;a<p/2;a++)
for(b=1;b<p/2;b++) {
c = p-a-b;
//判断直角三角形
if(a*a+b*b==c*c&&a<=b) {
s++;
}
}
System.out.println(s);
}
}
}
只判断直角三角形的时候,发现所有输出都是答案两倍,把每种方案打印后检查发现,输出的是345,435这种,结果是不同,但这题显然是重复的,相当于一样的,那么就固定它是小的,然后我以为会出现答案错误,结果对了,现在还不知道是不是真的对,可能这题数据不严谨。