XTU-OJ-循环2-勾股数

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;
}

提示

  1. 注意输出None的条件,第一次忽略了a==i+b这个条件导致样例输出不正确。
  2. 正确运用break语句即可输出最小勾股数。

你可能感兴趣的:(XTU-OJ-循环2-勾股数)