如何赢得捡硬币游戏?

参与游戏的两个对手A和B面前的桌子上有几堆分开的硬币,每堆硬币的数量是任意的。双方轮流从任意一堆(只允许一堆)中拿走一个或几个硬币(也可以拿走整堆),直到硬币完全取出。谁来拿最后一堆1。只有1:第一个会赢,策略:拿走所有硬币。

2.只有2个堆栈:设置为(k1,k2)

2.1当k1=k2时,输局的策略是A在1堆中取一样多,B在另一个1堆中取一样多,直到取完为止。2.2当k1≠k2时,先赢的策略是:A从大量的1桩中取ABS (K1-K2),变成2.1的情况,B必输。

3.只有3个堆栈:设置为(k1,k2,k3)

3.1当k1=k2=k3或者任意两个堆的数量相等时,第一个赢的策略是:A一次性拿走1堆不同币数的所有币,情况变成2.1,B就输了。3.2当k1≠k2≠k3时,分析如下:3.2.1先用一个简单的例子,当(1,2,k)是1)当k=3时,第一个拿的人会输,分析如下:A只有拿了才有可能。3)如果情况2.2 A注定(3) (1,1,3)如果情况3.1 A注定(4) (1,2)如果情况2.2 A注定(5) (1,2,6544)。2)如果情况是3.1 A,就输了。所以当它是(1,2,3)时,第一个就输了。2)当k≠3时,第一个会赢:A从第三堆拿走(k-3)个硬币,它变成3.2.1。当k≠2时,第一个赢。4)同样,我们也可以分析(2,3,k)的情况。当k=1时,第一个输。当k≠1时,第一个赢3.2.2仔细分析3.2.1,可以得出结论:1)当且仅当(K1) (K2) (K3) = 0(其中“”为按位异或运算符),第一个会失败,也可以表示为(K65438)。先发策略:(1)分别计算(k1) (k2)、(K1) (k3)和(k3) (K2)的值,分别设为m1、m2、m3,然后分别比较K3和M63。(2)重复步骤(1)并使用1和2的结论。

无论谁赢(或失败)。