您的位置:首页 > 其它

51nod 1831 小C的游戏

2017-07-24 15:42 155 查看
坑爹的题意。。。

每次可以对这个石子堆拿走一个或者把这个石子堆分成等量的几份并只取其中一份(不能不变或只剩下一个)。

【只取其中一份】,不是【去掉其中一份】。

题解是这样的,但我总觉得很玄学。。。

最简单的做法就是找规律了,直接搜一下就能获得所有的胜负态。
仔细观察可以发现质数除了2和17就是败的,合数除了16,34和289都是赢的。
感觉这样是不太科学的,那就来讲讲道理。
我们发现2,4,8都是赢的,而16的后继状态都是赢的,所以它是败的,而2^n(n>4)都能转化到16。
同样的我们能说明17和2^n17^m。
我们考虑一个合数,它的因数肯定有个败态的,它就必胜了。
这样也就说明了质数是必败了。

#include<bits/stdc++.h>
using namespace std;

int main()
{
int limit,n,T,i,flag;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
flag=0;
limit=sqrt(n);
for(i=2;i<=limit;i++)
{
if(n%i==0)
{
flag=1;
break;
}
}
if(!flag)
{
if(n==2||n==17)
printf("TAK\n");
else
printf("NIE\n");
}
else
{
if(n==16||n==34||n==289)
printf("NIE\n");
else
printf("TAK\n");
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  51nod 数学 博弈论