# 太激动了
蓝桥杯(螺旋折线)
-
我觉得这个思路特别好,可以去原作者博客看详细解释
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);
}
}
哎,失而复得的感觉太棒了,啦啦啦啦啦啦啦啦啦~