问题 E: 勾股数
题目描述
勾股数是指满足a2+b2=c2的正整数,比如最有名的“勾三股四弦五”。
现在给你两个正整数,请问是否存在另外一个正整数,使其成为“勾股数”?
输入
多组样例,每行一个样例,为两个整数x,y,(1≤x,y≤10000)。
输出
每行输出一个样例的结果。如果不能构成勾股数,输出“None”,如果存在多个,输出最小的那个。
样例输入
3 4
2 6
12 13
样例输出
5
None
5
此题题面意思十分好理解,在此便不解释
AC代码如下:
#include <stdio.h>
#include <stdlib.h>
//此处用到了绝对值,abs在stdlib的头文件里,fabs在math里
int main(void){
int x,y,i;
//三个数
while(~scanf("%d %d",&x,&y)){
for(i=abs(x-y)+1;i<=x+y;i++)
//记得三角形三边必须满足的关系
{
if(i*i==x*x+y*y||x*x==y*y+i*i||y*y==x*x+i*i){
printf("%d\n",i);
//如果满足三项中的一项便输出
break;
}
if(i==x+y) printf("None\n");//如果在最后也没有i满足的话就输出None 结束循环
}
}
return 0;
}
仅供参考,不希望同学们拿来完成任务