题目描述
如下图所示的螺旋折线经过平面上所有整点恰好一次。
对于整点 (X, Y),我们定义它到原点的距离 dis(X, Y) 是从原点到 (X, Y) 的螺旋折线段的长度。
例如 dis(0,1)=3,dis(−2,−1)=9。
给出整点坐标 (X, Y),你能计算出 dis(X, Y) 吗?
输入描述
输入格式:
输入一行,X 和 Y , −10^9≤X,Y≤10^9。
输出描述
输出 dis(X, Y)。
输入输出样例
示例
输入
0 1
输出
3
运行限制
- 最大运行时间:1s
- 最大运行内存: 256M
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int main()
{
long long X , Y;
cin >> X >> Y;
long long n = max(abs(X) , abs(Y));//获取正方形
long long t; //判断(X , Y)与(-n , -n)的距离
if(Y == -n){ //底边
t = X - (-n);
}else if(X == n){ //在右边
t = 2 * n + Y - (-n);
}else if(Y == n){ //上边
t = 4 * n + (n - X);
}else{ //左边
t = 6 * n + n - Y;
}
cout << 4 * n * (n + 1) - t;
return 0;
}