1237、螺旋折线
如下图所示的螺旋折线经过平面上所有整点恰好一次。
对于整点 (X,Y),我们定义它到原点的距离 dis(X,Y) 是从原点到 (X,Y) 的螺旋折线段的长度。
例如 dis(0,1)=3,dis(−2,−1)=9
给出整点坐标 (X,Y),你能计算出 dis(X,Y) 吗?
解题步骤
代码
#include<bits/stdc++.h>
using namespace std;
typedef long long int LL;
LL X,Y;
int main()
{
LL len=0;
cin>>X>>Y;
if(Y>=-X) //判断上下区
{
if(Y>X) //判断上半区的上下区
{
len=4*Y*Y;
len = len-abs(X-Y);
}
else
{
len=4*X*X;
len = len+abs(X-Y);
}
}
else{
if(Y>X+1) //判断下半区的上下区
{
len=(abs(2*X)-1)*(abs(2*X)-1);
len+=(Y-X)-1;
}
else
{
len=(abs(2*Y)+1)*(abs(2*Y)+1);
len-=(X-Y+1);
}
}
cout<<len;
return 0;
}
作者:GRID
链接:https://www.acwing.com/solution/content/24715/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。