您的位置:首页 > 其它

HDU 1391 Number Steps(思维题目,找规律)

2016-08-01 17:40 429 查看


Number Steps

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 5084    Accepted Submission(s): 3087


Problem 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

 

Source

Asia 2000, Tehran (Iran)

 
很简单的思维题目,找一下规律就OK了。
下面跟大家解释一下我是怎么找的规律。
只有当x==y或者x==y+2的时候才有值。
1.当x==y的时候,如果x是奇数,输出2*x-1,如果x是偶数的话,输出2*x。
2.当x==y+2的时候如果x是偶数,输出2*x--2,否则输出2*x-3
3.输出无解。
下面是AC代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;

int main()
{
int t,x,y;
cin>>t;
while(t--)
{
cin>>x>>y;
if(x==y)
{
if(x%2!=0)
{
cout<<2*x-1<<endl;
}
else
{
cout<<2*x<<endl;
}
}
else if(y==x-2)
{
if(x%2==0)
cout<<2*x-2<<endl;
else
cout<<2*x-3<<endl;
}
else cout<<"No Number"<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  HDU 思维题目