|
发表于 2006 年 1 月 1 日 14:25:11
|
显示全部楼层
答案是:先拿的人赢。
. w. e( w% d3 y6 t8 G对于三堆棋子的问题有一个通用的解法,如下:
- A# d: d- }& l! T- }6 w' W' e假设三堆棋子的个数的二进制表示分别是a, b, c,用^来表示二进制的异或。
7 n( j A2 X. d3 K% F( a如果a^b^c=0,则后拿的赢,反之,则先拿的赢。
5 x; l4 \, R8 B4 W4 d4 d* N1 N" w t2 f
如何赢:) n! K$ I1 h& M$ y
如果a^b^c不等于0,那么先拿的人总可以做到每次拿完棋子后,使得
, [$ H3 W' F8 V% U剩下的三堆棋子的个数(a1,b1,c1) 满足 f& G% Y- W5 u! ^: U3 ?/ \2 q
a1^b1^c1=0 (本题中,先拿的人应该从9里面拿4个)
$ v: D( ~4 z, D# L% I- }- F
/ m) [9 c3 [- r9 l# P: I" r. L8 u' H而后拿的那个人无论拿哪一堆都会破坏这个等式的成立。如果先拿的人每次拿完后,
7 _% ] |9 X. H. M总是使的剩下的棋子数满足这个等式,后拿的人每次都破坏这个等式,也就不可能
# ~& b0 u0 y( T0 k达到三堆全0的状态,那么获胜的必然是先拿的人了。9 K! o Q6 S/ G! R
r) V* S& ~. r" J' }( y, B
如果一开始三堆棋子的数就满足a^b^c=0,那么先拿的必先破坏这个等式,% K- [! y# B& N; W4 T$ V
后拿的人可以在每次拿棋子后满足这个等式,就获胜了。
: x" u# W0 C+ c, E z' ~# A2 D4 k1 G$ b7 ~+ s8 V7 d# C, L5 s
PS:PM偶个空间^_^ |
|