|
|
发表于 2006 年 1 月 1 日 14:25:11
|
显示全部楼层
答案是:先拿的人赢。
# h2 e6 s8 X3 q; F/ R g对于三堆棋子的问题有一个通用的解法,如下:
! b5 f2 a" L! |( C( o E假设三堆棋子的个数的二进制表示分别是a, b, c,用^来表示二进制的异或。" c' |& ]1 m# w Y0 |
如果a^b^c=0,则后拿的赢,反之,则先拿的赢。
5 d6 f* Z! F" J1 u
9 K! M; f" _ G5 A6 t+ ^/ `如何赢:% J# I* f9 G) Q* C0 w- C( W, X
如果a^b^c不等于0,那么先拿的人总可以做到每次拿完棋子后,使得6 u5 t( A6 J% F; ~
剩下的三堆棋子的个数(a1,b1,c1) 满足
6 V* v/ h* X& ]8 ka1^b1^c1=0 (本题中,先拿的人应该从9里面拿4个)" ^1 s% c& N/ ~% o3 r, P
+ T3 k1 N, \$ y7 { C9 i/ o
而后拿的那个人无论拿哪一堆都会破坏这个等式的成立。如果先拿的人每次拿完后,8 f9 Q9 a8 f* q( p% l
总是使的剩下的棋子数满足这个等式,后拿的人每次都破坏这个等式,也就不可能
% k4 Q( T' Y _0 |7 N" p达到三堆全0的状态,那么获胜的必然是先拿的人了。
9 `4 D& [6 a S. p( ^ L4 ^. l! j( q2 u8 ?9 I& B
如果一开始三堆棋子的数就满足a^b^c=0,那么先拿的必先破坏这个等式,7 N* s% g2 E% p9 p' M
后拿的人可以在每次拿棋子后满足这个等式,就获胜了。
4 c/ \1 {2 ~% j, @
/ k5 C& E+ U, }, ?* \ |( |; PPS:PM偶个空间^_^ |
|