POJ 3922A Simple Stone Game
题目链接 A Sample Stone Game 题目大意:给定n,k,表示最初时有n个石头,两个人玩取石子游戏,第一个人第一次可以取1~n-1个石头,后面每个人最多可以拿走前面一个人拿走的个数的K倍,当有一个人可以一次性全部拿走时获胜。问两人都在不失误的情况下,先拿着有没有必胜局势。有的话求他第一次最少该取多少个。 思考过程: 首先讨论k=1的情况 ,我们可以把一个数n(石子的个数),写为二进制下的表示,那先者取走最后一个1,那后者必然不能取走比它高一位的1,那么先拿者一定会赢,当然如果n本来就是2^i形式,那么先拿着当然不能拿走最后一个1,这样的话,石子就会取完了,所以这时先取者必输。举个例子来说 N = 20,他的二进制表示就是 1、10100 先拿者A拿走最后一个1(相当于拿走4个)n变为 2、10000 这时后取者B只能拿m=1,2,3,4个,假如是拿走3个,那么n变为 3、01101 这样A又可以取走最后一个1,。 ... ... 这样继续下去,当这个数n变为1时 00001, 最后一个1一定还是A拿走的,所以A必赢 而其实第2步中,不管B拿走多少个(即不管m是多少m = 1 or 2 or 3 or 4),在她之后的那个人又一定可以取走最后一个1(即取走x = (1<<y)),且这个数x一定小于等于m( 定理1 ),这样的话B永远也不可能取完。 而如果最初