分析
如果正常用循环来做的话会TLE……
所以要找规律,找上下半区
C++ 代码
#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;
}
可以,这个很巧妙