思维题,规律比较难找,但确实是一道规律题,四个点分别计算点的规律值,然后对每条边求偏移量,
AcWing 1237 螺旋折线
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{
int x, y;
cin>>x>>y;
if(abs(x) <= y){
int n = y;
cout<<(2 * n - 1) * (2 * n) + n + x <<endl;
}
else if(abs(y) <= x){
int n = x;
cout<<(2 * n) * (2 * n) + n - y <<endl;
}
else if(abs(x) <= abs(y) + 1 && y < 0){
int n = abs(y);
cout<<(2 * n) * (2 * n + 1) + n - x <<endl;
}
else{
int n = abs(x);
cout<<(2 * n - 1) * (2 * n - 1) + (n - 1) + y<<endl;
}
return 0;
}