|
|
发表于 2006 年 1 月 1 日 14:25:11
|
显示全部楼层
答案是:先拿的人赢。. J0 o( l6 h6 W2 }7 Z) K5 N
对于三堆棋子的问题有一个通用的解法,如下:# N7 F9 k- D* L
假设三堆棋子的个数的二进制表示分别是a, b, c,用^来表示二进制的异或。; V, y% f0 h# T+ {# o. P) h
如果a^b^c=0,则后拿的赢,反之,则先拿的赢。0 j& ~9 H7 w5 J' }: Y
7 x9 k$ C+ t4 G1 J3 \& o如何赢:) i1 s1 t3 r1 }- A# ~. [
如果a^b^c不等于0,那么先拿的人总可以做到每次拿完棋子后,使得* K) y4 v/ k. v9 E
剩下的三堆棋子的个数(a1,b1,c1) 满足
% U" z" ~+ e' G9 V! ka1^b1^c1=0 (本题中,先拿的人应该从9里面拿4个)% V6 r$ P7 d8 Q' U& ^1 R
& y7 f( G1 `& L% a% u% `而后拿的那个人无论拿哪一堆都会破坏这个等式的成立。如果先拿的人每次拿完后,
1 d0 }# x o; g; c' m+ c$ a总是使的剩下的棋子数满足这个等式,后拿的人每次都破坏这个等式,也就不可能
, [1 k8 j' d W% Z6 [( f3 R5 j达到三堆全0的状态,那么获胜的必然是先拿的人了。1 p' Y, n( v' p# ^" w& N& Q
2 l9 X! _3 d/ a
如果一开始三堆棋子的数就满足a^b^c=0,那么先拿的必先破坏这个等式,' I: e* f: b* q! c' h: X
后拿的人可以在每次拿棋子后满足这个等式,就获胜了。
) H8 d& x7 c% A+ Y( f" K4 s! Y
! b6 X) T8 h/ ]! B1 O @PS:PM偶个空间^_^ |
|