标题:螺旋折线
如图p1.png所示的螺旋折线经过平面上所有整点恰好一次。
对于整点(X, Y),我们定义它到原点的距离dis(X, Y)是从原点到(X, Y)的螺旋折线段的长度。
例如dis(0, 1)=3, dis(-2, -1)=9
给出整点坐标(X, Y),你能计算出dis(X, Y)吗?
思路:
找规律
代码:
#include<iostream> #include<stdio.h> #include<math.h> #include<stdlib.h> using namespace std; typedef long long ll; int main(){ ll x,y; cin>>x>>y; ll ans = 0; if(x>=0&&y>=0){ if(x>=y) ans = 4*x*x+x-y; else ans = 4*y*y+x-y; } else if(x>=0&&y<=0){ if(x>=-y) ans = 4*x*x+x-y; else ans = 4*y*y-3*y-x; } else if(x<=0&&y<=0){ if(y>=x+1) ans = 4*x*x+3*x+y; else ans = 4*y*y-3*y-x; } else if(x<=0&&y>=0){ if(y>=-x) ans = 4*y*y-y+x; else ans = 4*x*x+3*x+y; } cout<<ans<<endl; return 0; }