D64292.NimGame题目链接292.NimGame题目解析假设你和朋友玩一个捡石头的游戏,你和你的朋友轮流拿1~3块石头。得到最后一块石头的一方是剩下的一方。在第一轮中,您开始捡石头。还假设你和你的朋友足够聪明,每次都采取最优策略。现在给定一些石子,判断你最后能不能赢。想法让我们从少一点开始,扩展到n块石头。如果有1到3个石子,你就可以赢,因为规定你开始,假设会采用最优策略。也就是说,对方拿走棋子后不会剩下1。假设有4块石头。拿1就剩3,对方全拿,对方赢。如果你拿了2个,就会剩下2个。对方通吃,对方获胜。拿3就剩1,对方全拿,对方赢。也就是说,无论你拿走什么,你都会输。假设有5块石头。如果你拿了1,你将剩下4。对手拿1,然后给你剩下的3。你把它们全部拿走,你就赢了。对手拿走2个硬币,然后给你剩下的2个硬币。如果你拿下所有这些,你就赢了。对手拿走3件,给你剩下的1件。如果你拿下所有这些,你就赢了。拿2就剩3,对方全拿,对方赢。拿3就剩2,对方全拿,对方赢。因此,这一轮你会选择取1,剩下4。假设有6颗石子。如果你拿1,你就剩下5,对方拿1,剩下的4给你。参考一开始只有4个,对方获胜的情况。对方拿走2个硬币,给你剩下的3个硬币。如果你拿下所有这些,你就赢了。对手拿走3个硬币,给你剩下的2个硬币。如果你拿下所有这些,你就赢了。如果你拿了2个,你将剩下4个。对手拿1个,然后给你剩下的3个。你拿走所有的,你就赢了。对手拿走2个硬币,然后给你剩下的2个硬币。如果你拿下所有这些,你就赢了。对手拿走3件,给你剩下的1件。如果你拿下所有这些,你就赢了。如果你取了3个,就剩下3个。对方通吃,对方获胜。所以这一轮你会选择取2,剩下4。假设有7颗石子。如果你拿走1,就会剩下6。对方拿走1个,剩下的5个给你。参考一开始只有5个,你就赢了的情况。对方拿走2个硬币,给你剩下的4个硬币,对方获胜。对手拿走3个硬币,然后给你剩下的3个硬币。如果你拿下所有这些,你就赢了。如果你拿2,你就剩下5,对方拿1,把剩下的4给你,对方就赢了。对方拿走2个硬币,给你剩下的3个硬币。如果你拿下所有这些,你就赢了。对手拿走3个硬币,给你剩下的2个硬币。如果你拿下所有这些,你就赢了。如果你拿了3,你会剩下4。对手拿走1个,然后给你剩下的3个。你拿走所有的,你就赢了。对手拿走2个硬币,然后给你剩下的2个硬币。如果你拿下所有这些,你就赢了。对手拿走3件,给你剩下的1件。如果你拿下所有这些,你就赢了。因此,这一轮你会选择取3,剩下4。假设有8颗石子。你拿1,就剩下7,对方拿1,剩下的6给你。参考一开始只有6个,你就赢了的情况。对方拿2块,剩下的5块给你。参考一开始只有5个棋子的情况,你就赢了。对方拿走3件,给你剩下的4件,对方获胜。如果你拿2,你就剩下6。对方拿1,把剩下的5给你,你就赢了。对方拿走2个硬币,给你剩下的4个硬币,对方获胜。对手拿走3个硬币,然后给你剩下的3个硬币。如果你拿下所有这些,你就赢了。如果你拿了3个,你就剩下5个,对方拿1个给你剩下的4个,对方就赢了。对方拿走2个硬币,给你剩下的3个硬币。如果你拿下所有这些,你就赢了。对手拿走3个硬币,给你剩下的2个硬币。如果你拿下所有这些,你就赢了。因此,毫无疑问,你会输。我们可以制定规则。当剩余棋子为4的整数倍且双方均采用最优策略时,先出棋的一方为负。所以本题很简单,判断给定的数是否是4的整数倍即可。最终代码
