题目描述:
坐标平面的点(0,0)上有一个缺口。在一种操作中,如果这两点之间的欧几里德距离是整数(sqrt((x2 - x1)^2 + (y2 - y1)^2)是一个整数),则可以将芯片从某个点(x1,y1)移动到某个点(x2,y2)。
您的任务是确定把芯片从点(0,0)移动到到点(x,y)所需的最小操作次数。
输入:
t表示测试样例个数,
每一组样例包括x,y;
输出:
输出最小操作次数
数据范围:
1 ≤ t ≤ 3000,
0 ≤ x,y ≤ 50
思路:
如果一开始就在(0,0)点,则操作次数就是0;
如果输入的x,y各自的平方求和开根号是整数,则说明操作次数是1;
其它情况操作次数都是2:(证明如下)
AC代码:
#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
const int N = 110;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int T;
cin >> T;
while(T --)
{
int x,y;
cin >> x >> y;
int sum = sqrt(x * x + y * y);
if(x == 0 && y == 0)
{
cout << "0" << endl;
continue;
}
else if(sum * sum == x * x + y * y)
{
cout << "1" << endl;
}
else cout << "2" << endl;
}
return 0;
}