将M个石子分为N组,A分,B先拿,每次能在任意一堆上拿任意个石头(最多可将一堆全拿走)能将剩下石头一次取光者赢,问怎样A能赢
N:组数 M:石子数
N=1时,先手者赢
N=2时,易知当情况为(X,X)时,即M为偶数时,将石子分为两组数量相同的堆,后手者赢
可知M为偶时将石头分为两组即可保证后手者获胜。
接下来分析M为奇时的情况。
易知M为奇时后手可必赢
XOR问题:能使N组石头异或结果为0者获胜
例:(1,2,6)
1 = 001
2 = 010
6 = 110
-------------------------
XOR = 101
先手者从第三组取走3个,得到结果为:
1 = 001
2 = 010
3 = 011
-------------------------
XOR = 000
此时剩下:(1,2,3)。无论后手者怎样走,先手者仍可通过取走适当的石子使异或结果为0,即先手者获胜