#Z01567. acm/博弈/小尼教你捡石子
acm/博弈/小尼教你捡石子
题目描述
小尼和他的朋友还在玩捡石子游戏,规则如下:有n堆石子,每堆数量大于0,游戏开始由两个人轮流取石子,规定一次必须取一堆中大于零的任意数量石子。 最后把石子全部取完者为胜者。假设小尼先取,且双方都采取最好的策略(智商MAX!!),问最后小尼能否获胜。
输入格式
输入有多组,每组包含一个整数n表示有n堆,然后给出n堆石子的数量,每堆石子间用空格隔开。(n<50)
输出格式
对于每组输入,如果小尼获胜输出1,否则输出0。
3 3 5 1
1 1
1
1
提示
这里假定是 3 堆。 其实现在这个问题的一部分解决了——任意多堆的相同个数的 石头堆。而且很容易知道,(0,N,N)一定是必败态,如果有仔细尝试的话,可以发现(1,2,3)也是必败态,那到底有什么规律呢?
命题:(a,b,c) 是必败态等价于 p(a, b, c) = a xor b xor c = 0 ( xor 是异或运算)
如果我们面对的是一个非奇异局势 (a,b,c),要如何变为奇异局势呢?假设 a
推广到多个堆也是类似的办法。
豫公网安备41072702000346号