题目:
解析:
沿着箭头方向划一道线,可以发现,线的左右两边被分成了很多个半个正方形。
代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long X = sc.nextLong(), Y = sc.nextLong();
long d = 0; //距离
long n = 0;//第几圈
if( Y > 0 && Math.abs(X) <= Y) {
n = Y;
d = Y - X + 2 * Y;
} else if (X > 0 && Math.abs(Y) <= X ) {
n = X;
d = Y + X;
} else if (Y <= 0 && X >= Y - 1 && X <= -Y) {
n = -Y;
d = - ( - Y - X);
} else if (X < 0 && Y >= X + 1 && Y <= -X) {
n = -X - 1;
d = - ( Y - X - 1 - 2 * X - 1);
}
System.out.println( sum ( 1L, 2 * n, 1) * 2 - d);
}
private static long sum (long a0, long n, int d) {
return (2 * a0 + (n - 1) * d) * n / 2;
}
}