题目链接: https://www.lanqiao.cn/problems/176/learning/
如下图所示的螺旋折线经过平面上所有整点恰好一次。
对于整点 (X, Y)(X,Y),我们定义它到原点的距离 dis(X, Y)dis(X,Y) 是从原点到 (X, Y)(X,Y) 的螺旋折线段的长度。
例如 dis(0, 1)=3, dis(-2, -1)=9dis(0,1)=3,dis(−2,−1)=9。
给出整点坐标 (X, Y)(X,Y),你能计算出 dis(X, Y)dis(X,Y) 吗?
解题思路:本题较简单,最关键是求出四个表达式即可,还有dis(-n,-n)公式的推导。
x=n
x=-n
y=n
y=-n
dis(-n,-n)
代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long X = sc.nextLong();
long Y = sc.nextLong();
long n = Math.max(Math.abs(X),Math.abs(Y));
long t = 0;//表示(X,Y)到(-n,-n)的顺时针方向距离,并非直线距离
//一共四种情况,一一列举即可:X == n,Y == n,X == -n,Y == -n
//主要是4个表达式
if (X == n) t = 2*n+Y+n;
else if (X == -n) t=6*n+(n-Y);
else if (Y == n) t=4*n+(n-X);
else t = n +X ;
long dis = 4*n*(n+1) -t;//通过找规律得出dis(-n,-n)的公式,详见
System.out.println(dis);
}
}