我是真调不出错误了!
hiho1525逃离迷宫3
#include <stdio.h>
#include <stdlib.h>
#include <math.h> //中间变量为长整形,so x,y变量一定要设置为长整型
long long cal(long long x,long long y)
{
if (x<=y && y<=-x && x<=)
return (*x*x-*x+y)%;
else if (-y+<=x && x<=y- && y>)
return (*y*y-*y+x)%;
else if (-x+<=y && y<=x && x>)
return (*x*x-x-y)%;
else if (y+<=x && x<=-y && y<)
return (*y*y-y-x)%;
} int main()
{
long n,i,k;
long long dx[]={-,,,},dy[]={,-,,};
long long x,y,e,s[];
scanf("%ld",&n);
for (k=;k<=n;k++)
{
scanf("%lld%lld",&x,&y);
//任意两个字母必存在相邻的两个位置
//(0,0)[a]->( , )[a]->( , )[b]->(x,y)[b],三步必能实现
//所以寻找一步、两步(小于三步)的操作 //a=b:一步
//a<>b:大于一步
//(0,0)[a]->( , )[a]->(x,y)[b] 相邻
//(0,0)[a]->( , )[b]->(x,y)[b] 相邻
//寻找一步上下左右操作,(0,0)能否到达字母为b的格
//寻找一步上下左右操作,(x,y)能否到达字母为a的格 if (x== && y==)
{
printf("0\n");
continue;
}
e=cal(x,y);
for (i=;i<;i++)
s[i]=cal(x+dx[i],y+dy[i]); if ((x== && y==) || (x== && y==-) || (x== && y==) || (x==- && y==))
printf("1\n");
else if (e==)
printf("1\n");
else if ((x== && y==) || (x== && y==-) || (x==- && y==) || (x== && y==))
printf("2\n");
else if ((x== && y==) || (x== && y==-) || (x==- && y==) || (x==- && y==-))
printf("2\n");
//(0,0)->相邻[B D F H]->(x,y)
else if (e== || e== || e== || e==)
printf("2\n");
//(x,y)->相邻[0]->(0,0)
else if (s[]== || s[]== || s[]== || s[]==)
printf("2\n");
else
printf("3\n");
}
return ;
}