import java.util.Scanner;
public class Luoxuan {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
while(true){
Scanner sc1=new Scanner(System.in);
System.out.println("请输入x坐标:");
int a=sc1.nextInt();
System.out.println("请输入y坐标:");
int b=sc1.nextInt();
System.out.printf("坐标(%d,%d)上的数是:",a,b);
System.out.println(new Luoxuan().getVal(a,b));
}
}
private int getVal(int a,int b){
//定位点(a,b)在第几圈,默认原点为第0圈,向外扩散
int n=Math.max(Math.abs(a), Math.abs(b));
//如果(a,b)为原点,返回1
if(n==0) return 1;
int retval;
//求出坐标(n,n)点上的数
int val=(int) Math.pow((2*n+1), 2)-n*6;
//求出(a,b)与(n,n)点的位置关系
int i=n-a,j=n-b;
//将正方形分为上下左右4条边,需要注意对圈上的所有点不重不漏
//(a,b)在右边
if(i==0){
//如果是右上角的点
if(j==2*n) retval=val+6*n;
else retval=val-j;
} //(a,b)在下边
else if(j==0){
retval=val+i;
}//(a,b)在左边
else if(i==2*n){
retval=val+2*n+j;
}//(a,b)在上边
else retval=val+6*n-i;
return retval;
}
}