B:Number Steps
-
總時間限制:
- 1000ms
- 內存限制:
- 65536kB
-
描述
- Starting from point (0,0) on a plane, we have written all non-negative integers 0,1,2, ... as shown in the figure. For example, 1, 2, and 3 has been written at points (1,1), (2,0), and (3, 1) respectively and this pattern
has continued.
You are to write a program that reads the coordinates of a point (x, y), and writes the number (if any) that has been written at that point. (x, y) coordinates in the input are in the range 0...5000. -
輸入
- The first line of the input is N, the number of test cases for this problem. In each of the N following lines, there is x, and y representing the coordinates (x, y) of a point.
-
輸出
- For each point in the input, write the number written at that point or write No Number if there is none.
-
樣例輸入
-
3
4 2
6 6
3 4
-
樣例輸出
-
6
12
No Number
#include<iostream>
using namespace std;
int Query(int a,int b){
int m=0,n=0,sum=0;
while(true){
if(m==a&&n==b)
break;
else{
sum++;
int b=sum%4;
switch(b){
case 0:
m--;
n++;
break;
case 1:
case 3:
m++;
n++;
break;
case 2:
m++;
n--;
break;
}
}
}
return sum;
}
int main(){
int n,x,y;
cin>>n;
for(int i=0;i<n;i++){
cin>>x>>y;
if(y==x||y==(x-2))
cout<<Query(x,y)<<endl;
else{
cout<<"No Number"<<endl;
}
}
return 0;
}