|
|
发表于 2006 年 1 月 1 日 14:25:11
|
显示全部楼层
答案是:先拿的人赢。
; D( ?7 ]. z- L. s1 h; E对于三堆棋子的问题有一个通用的解法,如下:
- U1 y' A" h* C9 i假设三堆棋子的个数的二进制表示分别是a, b, c,用^来表示二进制的异或。9 d0 I5 I3 y* \+ u
如果a^b^c=0,则后拿的赢,反之,则先拿的赢。& V* A) S0 @/ B1 Y; S6 p7 Q
X# Q6 N( q' C0 u如何赢:) @$ S: x/ t3 a" v5 x, B* G) D
如果a^b^c不等于0,那么先拿的人总可以做到每次拿完棋子后,使得
: G" D1 g% a/ a" q剩下的三堆棋子的个数(a1,b1,c1) 满足7 ^4 |. n3 L- w# p
a1^b1^c1=0 (本题中,先拿的人应该从9里面拿4个), ^0 o7 h w$ a8 W, ?: c& {! C
* d% G- D# B* C3 v' V' Z& @! k+ s而后拿的那个人无论拿哪一堆都会破坏这个等式的成立。如果先拿的人每次拿完后,* f! c" o9 r* ~! G0 ]5 _! C
总是使的剩下的棋子数满足这个等式,后拿的人每次都破坏这个等式,也就不可能: F5 x2 d+ C( w# M. g
达到三堆全0的状态,那么获胜的必然是先拿的人了。
: P5 ^4 z1 V! d. m# }
5 Y; @% Z C7 y, s" h# U1 f( v如果一开始三堆棋子的数就满足a^b^c=0,那么先拿的必先破坏这个等式,
+ ~0 d' M8 p) d后拿的人可以在每次拿棋子后满足这个等式,就获胜了。
2 X- n/ ]& Z5 o9 S g& K! b4 E* G1 k/ J
PS:PM偶个空间^_^ |
|