|
|
发表于 2006 年 1 月 1 日 14:25:11
|
显示全部楼层
答案是:先拿的人赢。
2 c4 l3 K' a! U/ a4 F- ? x对于三堆棋子的问题有一个通用的解法,如下:
3 I: M9 t3 J. f- c( U1 a+ F' H+ p: Y假设三堆棋子的个数的二进制表示分别是a, b, c,用^来表示二进制的异或。
& ~) E- a5 h1 N( n5 h3 u f8 V2 b如果a^b^c=0,则后拿的赢,反之,则先拿的赢。4 {; c5 `- q. W; m9 O. m1 Y
7 u/ P0 X, C. I- {. _如何赢:9 ^2 w# |# ?+ f' Q9 f& H2 Q0 d, |
如果a^b^c不等于0,那么先拿的人总可以做到每次拿完棋子后,使得
8 M: z5 E( D, S3 j6 t J剩下的三堆棋子的个数(a1,b1,c1) 满足8 [5 H: M! y k( x0 P
a1^b1^c1=0 (本题中,先拿的人应该从9里面拿4个)
! x- o. G% }0 e& n, @3 ]! i
) V. R$ m& L _! }! M而后拿的那个人无论拿哪一堆都会破坏这个等式的成立。如果先拿的人每次拿完后,1 Q( }! U+ c7 L
总是使的剩下的棋子数满足这个等式,后拿的人每次都破坏这个等式,也就不可能$ |. }4 d, q9 P# ?$ `! U
达到三堆全0的状态,那么获胜的必然是先拿的人了。 R3 i V1 T |7 M6 i
; o$ \( D. o- j8 B
如果一开始三堆棋子的数就满足a^b^c=0,那么先拿的必先破坏这个等式,
3 N1 }* P* p* f* X3 l2 a5 ~后拿的人可以在每次拿棋子后满足这个等式,就获胜了。. s& D) @1 k6 }0 H& N2 L$ N* [
! M8 F) l9 a: t7 }! L. I
PS:PM偶个空间^_^ |
|