51nod 1831 小C的游戏

坑爹的题意。。。
每次可以对这个石子堆拿走一个或者把这个石子堆分成等量的几份并只取其中一份(不能不变或只剩下一个)。
【只取其中一份】,不是【去掉其中一份】。

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

最简单的做法就是找规律了,直接搜一下就能获得所有的胜负态。
仔细观察可以发现质数除了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");
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值