题目描述
如图所示的螺旋折线经过平面上所有整点恰好一次。
![](https://img-blog.csdnimg.cn/img_convert/6a31a89084d941b2a2520973e9aebea7.png)
对于整点 (X, Y),我们定义它到原点的距离 dis(X,Y ) 是从原点到 (X, Y)的螺旋折线段的长度。
例如dis(0,1)=3,dis(−2,−1)=9。
给出整点坐标 (X, Y),你能计算出 dis(X,Y ) 吗?
输入格式
X和 Y
输出格式
输出dis(X,Y)
输入输出样例
输入
0 1
输出
3
说明/提示
对于 40\%40%的数据,−1000≤X,Y≤1000。
对于 70\%70% 的数据,−10^5≤X,Y≤10^5。
对于 100\%100% 的数据,−10^9≤X,Y≤10^9。
#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
typedef long long ll;
int main()
{
ll sum = 0;
ll x, y;
cin >> x >> y;
if (x >= -y)
{
if (x < y)
sum = y * y * 4 - (y - x);
else
sum = x * x * 4 + (x - y);
}
else
{
if (y > x + 1)
{
ll t = abs(x) + abs(x) - 1;
sum = t * t + abs(x + 1) + y;
}
else
{
ll t = abs(y) + abs(y) + 1;
sum = t * t - (x - y + 1);
}
}
cout << sum << endl;
return 0;
}