|
|
发表于 2006 年 1 月 1 日 14:25:11
|
显示全部楼层
答案是:先拿的人赢。- i# i, E( Q! A
对于三堆棋子的问题有一个通用的解法,如下:
; {. ~# W, `7 y y( ~假设三堆棋子的个数的二进制表示分别是a, b, c,用^来表示二进制的异或。
1 Q( ?- H1 ?, L如果a^b^c=0,则后拿的赢,反之,则先拿的赢。
& S/ v, ?8 F2 m8 Z8 v* }% f/ _- l. w, I8 P6 S. H# ?
如何赢:
/ t9 g4 A. Q# _ T+ B! u+ x- w如果a^b^c不等于0,那么先拿的人总可以做到每次拿完棋子后,使得7 u/ d- z6 F' [. I: X A2 t; S
剩下的三堆棋子的个数(a1,b1,c1) 满足
/ G: X& M% V' D1 ra1^b1^c1=0 (本题中,先拿的人应该从9里面拿4个)
( j. m- Z; J* b' U0 z( |) a9 R
+ t1 K7 G! n( U1 G) @9 H z \而后拿的那个人无论拿哪一堆都会破坏这个等式的成立。如果先拿的人每次拿完后,
3 w; v0 \* S- @9 q3 v2 V总是使的剩下的棋子数满足这个等式,后拿的人每次都破坏这个等式,也就不可能
0 y2 d9 s& Y q9 C3 r( V; h5 n达到三堆全0的状态,那么获胜的必然是先拿的人了。
$ u7 Z5 p7 V# B2 k% n3 m4 C! I9 i. f ?2 P* w+ f
如果一开始三堆棋子的数就满足a^b^c=0,那么先拿的必先破坏这个等式,
5 f" r9 M7 V- C" J, Z1 H后拿的人可以在每次拿棋子后满足这个等式,就获胜了。% g5 Q* W6 j0 V) c5 Y$ T; ^& p! ?
& W0 f4 a. k: e, S, j% y
PS:PM偶个空间^_^ |
|