本文已参与「新人创作礼」活动,一起开启掘金创作之路。
3455. 数字台阶
原题传送:AcWing 3455. 数字台阶
如下图所示,我们在一个平面上建立了一个数字台阶,从点 开始,我们在平面中依次标注了 等所有非负整数。
例如,在点 处,我们依次标注了 。
现在,给定一个若干坐标,请你判断,该坐标上是否标有数字,以及标有什么数字。
输入格式
第一行包含整数 。表示询问坐标数量。
接下来 行,每行包含两个整数 ,表示询问坐标为 。
输出格式
对于每个询问,输出一行结果。
如果询问坐标上存在数字,则输出该数字,否则输出 No Number。
数据范围
,
输入样例:
3
4 2
6 6
3 4
输出样例:
6
12
No Number
思路:
找规律,所有合法的点在两条直线上。
题解:
#include <bits/stdc++.h>
using namespace std;
int f(int x, int y)
{
if(x % 2 == 0 && y % 2 == 0 && (x == y || x == y + 2)) return x + y;
else if(x % 2 && y % 2 && (x == y || x == y + 2)) return x + y - 1;
else return -1;
}
int main()
{
int T;
cin >> T;
while(T--)
{
int x, y;
cin >> x >> y;
int res = f(x, y);
if(res == -1) cout << "No Number" << endl;
else cout << res << endl;
}
return 0;
}