题意
在一个n∗n n*nn∗n的棋盘中,有一个皇后在(x,y)的位置上,限定只能往左边、下面、左下角走若干格,玩家一和玩家二可以对皇后进行操作,玩家一先操作,看谁先把皇后走到(1,n)(左下角)
这里是先读入y再读入x
有多组数据!!
样例
输入
6
2 4
输出
2
思路
找规律(设必胜点为1,必败点为0)
首先我们先设一个图中的一个点为必败点,那么可以到这个点的所有路的是比胜点
如:
1
1 0 0 1
1 0 1 0
1 1 0 0
0 1 1 1
2
1 0 0 1
1 0 1 1
1 1 0 1
0 1 1 1
3
1 1 1 1
1 0 1 1
1 1 0 1
1 1 1 1
于是就可以了求出答案了
代码
#include <cstdio>
#include <cstring>
using namespace std;
int n,x,y;
int f[100010];
int main()
{
freopen("game.in","r",stdin);
freopen("game.out","w",stdout);
scanf("%d",&n);
while (n)
{
scanf("%d%d",&y,&x);
memset(f,0,sizeof(f));
x=n-x+1; int j=0; bool p=0;
for(int i=1;i+j<=n;++i)
if(!f[i])
{
f[i]=1;
if((x==i&&y==i+j)||(x==i+j&&y==i))
{
puts("2");
p=1;
break;
}
f[i+j]=1; ++j;
}
if(!p) puts("1");
n=0; scanf("%d",&n);
}
return 0;
}