|
发表于 2006 年 1 月 1 日 14:25:11
|
显示全部楼层
答案是:先拿的人赢。
2 j2 G9 ^: P+ n( M' Y! v8 R对于三堆棋子的问题有一个通用的解法,如下:2 i, W8 b# e% ]3 a
假设三堆棋子的个数的二进制表示分别是a, b, c,用^来表示二进制的异或。
: o9 H6 y$ }2 ?, W6 l如果a^b^c=0,则后拿的赢,反之,则先拿的赢。
{; G* {1 X5 ^
% W3 e4 k0 J; R& P( N; O/ p如何赢:$ P6 E& A3 K4 U) k- e
如果a^b^c不等于0,那么先拿的人总可以做到每次拿完棋子后,使得7 s+ S* {0 G9 L5 h! B# L; B
剩下的三堆棋子的个数(a1,b1,c1) 满足/ w0 j% o" ~( ?6 {9 B i: j0 n
a1^b1^c1=0 (本题中,先拿的人应该从9里面拿4个)
) \1 v3 O* H0 l( [! r( W/ Y& v# p6 R6 v9 m0 F9 @* S
而后拿的那个人无论拿哪一堆都会破坏这个等式的成立。如果先拿的人每次拿完后,
4 x& i) Z$ D" y总是使的剩下的棋子数满足这个等式,后拿的人每次都破坏这个等式,也就不可能3 u8 c; Q5 n7 B" B F; g
达到三堆全0的状态,那么获胜的必然是先拿的人了。+ e$ U4 q7 M; l+ z
: d) Z" P" V1 J* K
如果一开始三堆棋子的数就满足a^b^c=0,那么先拿的必先破坏这个等式, K8 }4 O4 N$ O! e& l2 k; z
后拿的人可以在每次拿棋子后满足这个等式,就获胜了。
2 `8 `# a( r0 Q% @
7 p5 v. {5 ^) i+ c4 NPS:PM偶个空间^_^ |
|