您的位置:首页 > 其它

UVALive 2052 Number Steps【简单模拟】水题

2016-07-21 17:58 483 查看
A - Number Steps
Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld
& %llu
Submit Status

Description





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.

Input

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.

Output

For each point in the input, write the number written at that point or write "No Number" if there is none.

Sample Input
3
4 2
6 6
3 4

Sample Output

6

12

No Number

题目大意:按照图中所示方式排布数字,问点x,y是否有数字,如果有,输出,否则输出没有。

思路:

简单模拟。

Ac代码:

#include<stdio.h>
#include<string.h>
using namespace std;
int a[5005][5005];
void init()
{
int x=1,y=1;
int tmp=1;
int d=3;
memset(a,0,sizeof(a));
while(1)
{
a[x][y]=tmp;
x++;y++;
tmp+=d;
if(d==3)d=1;
else d=3;
if(x>5002||y>5002)break;
}
x=2;y=0;
tmp=2;
d=1;
while(1)
{
a[x][y]=tmp;
x++;y++;
tmp+=d;
if(d==3)d=1;
else d=3;
if(x>5002||y>5002)break;
}
}
int main()
{
init();
int t;
scanf("%d",&t);
while(t--)
{
int x,y;
scanf("%d%d",&x,&y);
if(x==0&&y==0)
{
printf("0\n");
continue;
}
if(a[x][y]==0)
{
printf("No Number\n");
}
else printf("%d\n",a[x][y]);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  UVALive 2052