请你与同伴一块玩个游戏。在桌上摆三小堆火柴,例如,分别是12、10和7根。然后,轮流从一堆火柴堆里取出火柴,可以取一根,也可以一次取完整堆火柴,可是不能一根不取。谁取完火柴,谁就赢了。例如,A、B两人轮流取火柴的变化是:
开始 12、10、7
A取1 12、10、6
B取3 12、7、6
A取11 1、7、6
B取2 1、5、6
A取2 1、5、4
B取2 1、3、4
A取2 1、3、2
B取1 1、2、2
A取1 0、2、2
B取1 0、1、2
A取1 0、1、1
B取1 0、0、1
最后取完火柴的是A,他获胜了。那么,A是否总能获胜呢?
这个问题的答案与二进制有关。把12、10、7分别用二进制表示:
12——1100,
10——1010,
7——111。
竖看这三个数的每一列,除最右边的一列外,都有两个1。A先取,只要
每次使每一列有两个1或者一个1也没有,就能获胜:
12——1100,
10——1010,
6——110。
A取1后,B取3,破坏了这个结果。A再取11,又恢复了这个结果:
1——1,
7——111,
6——110。
这以后,不管B怎么取,总要破坏这个结果;而A总可以恢复它,直到取得胜利。
由此可见,要是开始时的数组符合这个要求,并且两人都知道取胜诀窍,那么,总是先取数的人输,后取数的人赢了。在这种情况下,先取数的人,只好把希望寄托在对手出错。要是把火柴分成四堆、五堆或者更多的堆,不管每堆多少根,用这个办法也一样能取得胜利。