有n个石子,两个人分别取石子,第一次只能取一粒,
以后取石子的数量不能超过前一个人取石子数量的两倍,最后取到石子胜,先取必胜为1;先取必输为0;
#include<iostream>
using namespace std;
int main()
{
int a[100][100]={}; //a[i][j]=1表示i粒棋子第一次最多取j粒 先取必胜
int n;
int i,j,k;
int flag;
cin>>n;
a[1][1]=1;
for(i=2;i<=n;i++)
{
for(j=1;j<i;j++)
{
flag=1;
for(k=1;k<=j;k++)
{
if(2*k>=i-k)
{
break;
}
if(a[i-k][2*k]==0)
{
flag=0;
break;
}
}
a[i][j]=1-flag;
}
}
cout<<a[n][1]<<endl;
return 0;
}