题目描述
如图所示的螺旋折线经过平面上所有整点恰好一次。
对于整点(X, Y),我们定义它到原点的距离dis(X, Y)是从原点到(X, Y)的螺旋折线段的长度。
例如dis(0, 1)=3, dis(-2, -1)=9
给出整点坐标(X, Y),你能计算出dis(X, Y)吗?
输入
X和Y,数据在int范围以内。
输出
输出dis(X, Y)
样例输入 Copy
0 1
样例输出 Copy
3
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
int main() {
ll x, y, cir;
cin >> x >> y;
cir = max(abs(x), abs(y));
ll ans = 0, tem = 2 * (cir - 1);
ans += (2 + tem) * tem;
ll len = cir * 2;
if(x == -cir) {
ll tem = y + cir;
if(tem == 0) {
ans += len * 4ll;
}
else ans += tem;
}
else if(y == cir) {
ans += len;
ans += x + cir;
}
else if(x == cir) {
ans += 2 * len;
ans += -(y - cir);
}
else if(y == -cir) {
ans += 3 * len;
ans += -(x - cir);
}
cout << ans;
return 0;
}