题目描述
如图所示的螺旋折线经过平面上所有整点恰好一次。
对于整点 (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; }