版权声明:转自可爱的安安的博客!qq:1085589289 https://blog.csdn.net/ac1085589289/article/details/83656288
Description
勾股数
题目描述
勾股数是指满足a2+b2=c2的正整数,比如最有名的“勾三股四弦五”。
现在给你两个正整数,请问是否存在另外一个正整数,使其成为“勾股数”?
输入
第一行是一个整数K,表示样例的个数。 以后每行一个样例,为两个整数x,y,(1≤x,y≤10000)。
输出
每行输出一个样例的结果。如果不能构成勾股数,输出“None”,如果存在多个,输出最小的那个。
样例输入
3
3 4
2 6
12 13
样例输出
5
None
5
#include<iostream>
using namespace std;
int main()
{
int k,a,b;
cin>>k;
while(k--)
{
cin>>a>>b;
if(a<b)
{
int c;
c=a;
a=b;
b=c;
}
for(int i=a-b+1;i<=a+b;i++)
{
int i2=i*i,a2=a*a,b2=b*b;
if(i2==a2+b2||a2==i2+b2||b2==a2+i2)
{
cout<<i<<endl;
break;
}
if(i==a+b||a==i+b) cout<<"None"<<endl;
}
}
return 0;
}
提示
- 注意输出None的条件,第一次忽略了a==i+b这个条件导致样例输出不正确。
- 正确运用break语句即可输出最小勾股数。