|
发表于 2006 年 1 月 1 日 14:25:11
|
显示全部楼层
答案是:先拿的人赢。# _& z2 Q' f" X; P5 Q/ J; z. L
对于三堆棋子的问题有一个通用的解法,如下:
5 N" ^; s8 T C$ B" P i假设三堆棋子的个数的二进制表示分别是a, b, c,用^来表示二进制的异或。
& J& k' j) G4 B' U如果a^b^c=0,则后拿的赢,反之,则先拿的赢。
8 I5 Z% r% F1 Z2 t0 \# r- G; S) ~3 X. K
如何赢:
0 a- G* w* l& }9 i! h/ q* h/ R如果a^b^c不等于0,那么先拿的人总可以做到每次拿完棋子后,使得& n6 F; H- A, g- j( k+ ~
剩下的三堆棋子的个数(a1,b1,c1) 满足% e7 k) D" M, f& @; x! ?' D
a1^b1^c1=0 (本题中,先拿的人应该从9里面拿4个)
i ^# s; o/ E/ A) I: o6 r* @# h0 m j2 g+ Y+ Q" H& e' d
而后拿的那个人无论拿哪一堆都会破坏这个等式的成立。如果先拿的人每次拿完后, w( y9 \" q% X1 w; \" s+ G) [! ~
总是使的剩下的棋子数满足这个等式,后拿的人每次都破坏这个等式,也就不可能6 x6 H/ l- y; D0 h
达到三堆全0的状态,那么获胜的必然是先拿的人了。
# U5 C8 _9 P- ^$ o, [* S, C6 S" ^7 i+ `: O- V& `$ \4 |. w, _
如果一开始三堆棋子的数就满足a^b^c=0,那么先拿的必先破坏这个等式, c" E7 y: F' j# K
后拿的人可以在每次拿棋子后满足这个等式,就获胜了。$ R, h8 v7 H. S4 L9 ~. d
, C5 M6 I# L1 e T, e0 xPS:PM偶个空间^_^ |
|