1237. 螺旋折线 题解

跳转链接

https://www.acwing.com/problem/content/1239/ 来源:第九届蓝桥杯省赛C++B组,第九届蓝桥杯省赛JAVAB组

题目描述

如下图所示的螺旋折线经过平面上所有整点恰好一次。 对于整点 (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)。 数据范围 −10^9^≤X,Y≤10^9^ 输入样例 0 1 输出样例 3

题解思路


代码

cpp
#include <bits/stdc++.h>
using namespace std;

typedef long long LL;

int main()
{
    int x, y;
    cin >> x >> y;

    if(abs(x) <= y && y > 0)  // 在上方
    {
        int n = y;
        cout << (LL)(2 * n - 1) * (2 * n) + x - (-n) << endl;
    }
    else if(abs(y) <= x && x > 0)  // 在右方
    {
        int n = x;
        cout << (LL)(2 * n) * (2 * n) + n - y << endl;
    }
    else if(abs(x) <= abs(y) + 1 && y < 0)  // 在下方
    {   
        int n = abs(y);
        cout << (LL)(2 * n) * (2 * n + 1) + n - x << endl;
    }
    else  // 在左方 
    {
        int n = abs(x);
        cout << (LL)(2 * n - 1) * (2 * n - 1) + y - (-n + 1) << endl;
    }
    
    return 0;
}
Python Selenium定位html元素
3417. 砝码称重 题解
Valaxy v1.0.0-rc.3 驱动|主题-Yunv1.0.0-rc.3