# 太激动了

蓝桥杯(螺旋折线)

原作者

  • 我觉得这个思路特别好,可以去原作者博客看详细解释

import java.util.Scanner;

// 对于整点(X, Y),我们定义它到原点的距离dis(X, Y)
// 是从原点到(X, Y)的螺旋折线段的长度。
//  例如dis(0, 1)=3, dis(-2, -1)=9
//  给出整点坐标(X, Y),你能计算出dis(X, Y)吗
public class Main{
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        long x = scanner.nextInt();
        long y = scanner.nextInt();
        //判断点所在的正方形,则实际计算的正方形个数为n-1
        long n = Math.max(Math.abs(x),Math.abs(y));
        //1.之前补全的正方形的长度之和(8,16,24...等差数列)
        //等差数列求和:Sn=((A1+An)*n)/2,将公差8,项数n代入,再减去所在正方形8n,化简得
        long C = 4*(n-1)*n;
        //2.计算(-n,-n)到点(x,y)的长度
        long sum = 0;
        long x1 = -n;
        long y1 = -n;
        long Dy = y-y1;
        long Dx = x-x1;
        if(y>x){
            sum += Dx+Dy;
        }else{
            sum += (8*n-Dy-Dx);
        }
        System.out.println(sum+C);
    }
}


哎,失而复得的感觉太棒了,啦啦啦啦啦啦啦啦啦~

posted @ 2022-10-28 23:55  张一*  阅读(45)  评论(0)    收藏  举报