题目:
题目描述
如图所示的螺旋折线经过平面上所有整点恰好一次。
对于整点(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
分析:
定点+线段平行;
AC代码:
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
using namespace std;
#define ll long long
ll n,m,ma;
int main()
{
scanf("%lld%lld",&n,&m);
ll x=fabs(n);
ll y=fabs(m);
ma=max(x,y);
ll ans=ma*ma*4;
if(y==ma){
if(m>0)
ans=ans-ma+n;
else
ans=(ma-n)+2*ma+ans;
}
else if(x==ma){
if(n>0)
ans+=(ma-m);
else
ans=ans-2*ma-(ma-m);
}
printf("%lld\n",ans);
}