2014北大軟工夏令營機試 B:Number Steps

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




發佈了30 篇原創文章 · 獲贊 4 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章