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)吗?

 

思路:

 

 找规律

代码:

#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;
}

 

posted @ 2020-09-28 20:39  sqsq  阅读(149)  评论(0编辑  收藏  举报