|
|
发表于 2006 年 1 月 1 日 14:25:11
|
显示全部楼层
答案是:先拿的人赢。
' x4 e/ c$ B) W$ ?) _对于三堆棋子的问题有一个通用的解法,如下:
8 ^- k$ W! m A% n6 q. w假设三堆棋子的个数的二进制表示分别是a, b, c,用^来表示二进制的异或。
' g) `5 k) ^! k" r如果a^b^c=0,则后拿的赢,反之,则先拿的赢。
8 N8 n9 L A2 a2 C0 |5 x* h
$ @( D8 M4 O4 u5 A; x5 w% v如何赢:
" Y( q9 _+ V4 S; }如果a^b^c不等于0,那么先拿的人总可以做到每次拿完棋子后,使得, W& L* r: B3 h+ v& Q, `
剩下的三堆棋子的个数(a1,b1,c1) 满足
G: D+ W) C6 w! U# b/ f: ba1^b1^c1=0 (本题中,先拿的人应该从9里面拿4个)1 m& f1 @3 B5 f9 G* S7 q
, k& I" V% b0 q0 W I! Y% l( Q0 N9 q
而后拿的那个人无论拿哪一堆都会破坏这个等式的成立。如果先拿的人每次拿完后, D) Z }# o( f3 ^- ?
总是使的剩下的棋子数满足这个等式,后拿的人每次都破坏这个等式,也就不可能
8 J! o0 G) s9 k: `/ y6 [$ P8 W1 H' `达到三堆全0的状态,那么获胜的必然是先拿的人了。$ A' f& H- y' q b: h
0 k' g" H2 n2 ^5 y2 k. \% J如果一开始三堆棋子的数就满足a^b^c=0,那么先拿的必先破坏这个等式,# p) |7 Z& x7 Q# s% K* C4 |. B6 v; n
后拿的人可以在每次拿棋子后满足这个等式,就获胜了。, E/ w6 U$ L- ^2 d2 b z
) M* s: _+ m% u
PS:PM偶个空间^_^ |
|