水题
题目描述
A number spiral is an infinite grid whose upper-left square has number 1. Here are the first five layers of the spiral:
Your task is to find out the number in row y and column x.
输入
The first input line contains an integer t(1 ≤ t ≤ 105): the number of tests.
After this, there are t lines, each containing integers y and x(1 ≤ y,x ≤ 109).输出
For each test, print the number in row y and column x.
样例输入 Copy
3 2 3 1 1 4 2样例输出 Copy
8 1 15
找规律即可
代码
#include <cstdio>
using namespace std;
typedef long long ll;
ll n, x, y;
int main(){
scanf("%lld", &n);
while (n--) {
scanf("%lld%lld", &x, &y);
if (x > y) {
if (x % 2 == 0) printf("%lld\n", x * x + 1 - y);
else printf("%lld\n", (x - 1) * (x - 1) + y);
}
else {
if (y % 2 == 1)printf("%lld\n", y * y + 1 - x);
else printf("%lld\n", (y - 1) * (y - 1) + x);
}
}
return 0;
}