|
发表于 2006 年 1 月 1 日 14:25:11
|
显示全部楼层
答案是:先拿的人赢。- V* s k, }+ G4 n/ q
对于三堆棋子的问题有一个通用的解法,如下:
) u4 q3 g* ~% r+ Y" N9 J假设三堆棋子的个数的二进制表示分别是a, b, c,用^来表示二进制的异或。
2 O8 U- [# `0 K9 X. j( ], U如果a^b^c=0,则后拿的赢,反之,则先拿的赢。2 C( X# K& N# O `, s
+ ?! A6 v* |+ q
如何赢:
3 X$ d2 C4 D: J如果a^b^c不等于0,那么先拿的人总可以做到每次拿完棋子后,使得
9 \" d. t1 ]2 `% Y剩下的三堆棋子的个数(a1,b1,c1) 满足: {$ c0 K3 c) Z$ K" A+ Z
a1^b1^c1=0 (本题中,先拿的人应该从9里面拿4个)" h7 P+ g: A8 v4 n
_- @8 n! t4 ?: z. V J而后拿的那个人无论拿哪一堆都会破坏这个等式的成立。如果先拿的人每次拿完后,+ d6 Z# M0 @( N: b [* G
总是使的剩下的棋子数满足这个等式,后拿的人每次都破坏这个等式,也就不可能
( U* P8 m+ l; g9 D) p$ A达到三堆全0的状态,那么获胜的必然是先拿的人了。
. }6 n3 n& x: K \8 O* N# E+ P$ ?( G0 k: N6 v
如果一开始三堆棋子的数就满足a^b^c=0,那么先拿的必先破坏这个等式,
8 u' p# r, `0 P4 j+ p7 q- G后拿的人可以在每次拿棋子后满足这个等式,就获胜了。0 n! R' z8 ~( u
3 ?! I9 d F5 J% B O; z
PS:PM偶个空间^_^ |
|