通常的Nim游戏的定义
有若干堆石子,每堆石子的数量都是有限的,合法的移动是“选择一堆石子并拿走若干颗(不能不拿)”,如果轮到某个人时所有的石子堆都已经被拿空了,则判负(因为他此刻没有任何合法的移动)。
L.Bouton 提出了如下定理,从而彻底地解决了 Nim 问题:
异或和值为零则后手胜,否则先手胜。
理解:首先可以将每个石子的个数分成多个2的指数倍的数之和,然后将这些数按位异或,结果为0 ,就是必败。
异或结果为0即代表两个数相等。
可以理解为,后拿的人按照先拿的人的石子个数来拿(选择好堆数保证最优解),最后后拿的人恰好拿完,所以先拿的人就败。
基础题:http://poj.org/problem?id=2234
题解:http://blog.youkuaiyun.com/nininicrystal/article/details/47416303
变形:http://acm.hdu.edu.cn/showproblem.php?pid=4315
题解:http://blog.youkuaiyun.com/nininicrystal/article/details/47606655