题目大意:
有n个球n<=1000,甲乙两人轮流取,只能取1,3,7,8个,谁最后取完全部的球输,甲先取,都采取最好的策略,问甲输赢?
找出必胜和必败态之一即可,
如果有1个球,为必败态
2个球,为必胜态,因为我只要拿走1个球,就转化成了必败态
3个球,必败态,因为无论我拿走1个或者是3个都转化成了必胜态
4个球,必胜态,因为只要拿走1个球就转化成了必败态
...
...
...
#include <iostream>
using namespace std;
int main()
{
freopen("C:\\in.txt","r",stdin);
int flag[1001]={0};
int b[]={1,3,7,8};
int T;
scanf("%d",&T);
while(T--)
{
int num;
scanf("%d",&num);
for(int i=2;i<=num;i++)
for(int j=0;j<4&&b[j]<i;j++)
if(flag[i-b[j]]==0)
{
flag[i]=1;
break;
}
printf("%d\n",flag[num]);
}
return 0;
}