您的位置:首页 > 其它

杭电OJ题 1391 Number Steps 解题报告

2012-12-09 22:48 513 查看

Number Steps

[align=center]Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 2697    Accepted Submission(s): 1656

[/align]

[align=left]Problem Description[/align]
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.

 

[align=left]Input[/align]
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.

 

[align=left]Output[/align]
For each point in the input, write the number written at that point or write No Number if there is none.

 

[align=left]Sample Input[/align]

3
4 2
6 6
3 4

 

[align=left]Sample Output[/align]

6
12
No Number

 

——————————————————————————————————————————————————————————

主要是找规律。当x==y时 当x是偶数时,为x*2,如果是奇数时,为2*n-1,其他的数的话如果y < x,则为y==x时的数减去2就行了

/***********************
*   程序名:Number Steps.c
*   功能:ACM
************************/

#include <stdio.h>

int main()
{
int N, x, y;
scanf("%d", &N);
while(N--) {
scanf("%d %d", &x, &y);
if(x == y || x - y == 2) {
if(x == y) {
if(x % 2 == 0) {
printf("%d\n", x*2);
}
else {
printf("%d\n", x*2-1);
}
}
else {
if(x % 2 == 0) {
printf("%d\n", x*2-2);
}
else {
printf("%d\n", x*2-3);
}
}
}
else {
printf("No Number\n");
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ACM解题报告 SORT