ACWing459 珠心算测验
Last updated
Last updated
4 2 314package Enum;
import java.util.Scanner;
import java.lang.Math;
public class SpiralMaritx {
static int N;
static int i,j;
public static int getNums(int T) {
if(N+1 - 2*T == 0) return 1;
return 4*(N+1-2*T);
}
public static int findPosition(int T) {
int position = 0;
for(int k =T;k<=N-T+1;k++) {
position++;
if(i==T&&j==k) return position;
}
for(int k =T+1;k<=N-T+1;k++) {
position++;
if(j==N-T+1&&i==k) return position;
}
for(int k = N-T;k>=T;k--) {
position++;
if(i==N-T+1&&j==k) return position;
}
for(int k = N-T;k>=T+1;k--) {
position++;
if(i==k&&j==T) return position;
}
return 0;
}
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
i=sc.nextInt();
j=sc.nextInt();
int T,position = 0;
//求出i,j是在第几个周期的第几个数
T=Math.min(i, j);
T=Math.min(T, N+1-j);
T=Math.min(T, N+1-i);
position = findPosition(T);
//根据它所在的周期和周期内位置获取它的值
for(i=1;i<T;i++) {
position += getNums(i);
}
System.out.println(position);
}
}