2018年第九届蓝桥杯【C++省赛B组】【第七题:螺旋折线】
第七题
标题:螺旋折线

如图p1.png所示的螺旋折线经过平面上所有整点恰好一次。
对于整点(X, Y),我们定义它到原点的距离dis(X, Y)是从原点到(X, Y)的螺旋折线段的长度。
例如dis(0, 1)=3, dis(-2, -1)=9
给出整点坐标(X, Y),你能计算出dis(X, Y)吗
思路:观察不难发现1.4象限的直角顶点的值都为平方和。
分类比较麻烦,于是采用只用一个顶点来计算。
此处采用第一象限的点。
可以发现,在y=x+1和y=x分成两部分,上部分由顶点减去得到,下部分由顶点加上得到。
``
#include"bits/stdc++.h"
using namespace std;
long long int M,N,ans,t,X;
int main()
{
scanf("%lld%lld",&M,&N);
t = max(abs(M),abs(N));
if((N>M&&M>0)||(N>=M+1&&M<0))
{
ans = 4tt - (t-M+t-N);
}
else
ans = 4tt + (t-M+t-N);
printf("%lld",ans);
return 0;
}