-
题目描述:
-
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
题目分析:
根据输入的点坐标(x,y)输出坐标对应的数,通过观察上图可发现:
(1)当x=y时,若x、y为偶数,则对应的数为x+y;若x、y为奇数,则对应的数为x+y-1;
(2)当x!=y,且x-y=2时,若x、y为偶数,则对应的数为x+y;若x、y为奇数,则对应的数为x+y-1;
(3)当x=y=0时,对应的数为0;
(4)其它情况,输出No Number,对应的数不存在。
源代码:
#include <stdio.h>
int num(int x,int y) //返回计算结果,如果输出“No Number”则返回-1
{
if(x==0 && y==0)
return 0;
else if((x==y||x-y==2) && x%2==1 && y%2==1)
return x+y-1;
else if((x==y||x-y==2) && x%2==0 && y%2==0)
return x+y;
else
return -1;
}
int main()
{
int N;
int x,y;
int result;
scanf("%d",&N);
while(N>0)
{
scanf("%d %d",&x,&y);
result=num(x,y);
if(result!=-1)
printf("%d\n",result);
else
printf("No Number\n");
N--;
}
return 0;
}
程序截图: