|
|
发表于 2006 年 1 月 1 日 14:25:11
|
显示全部楼层
答案是:先拿的人赢。3 I: k3 m- U0 L! m2 g0 K G
对于三堆棋子的问题有一个通用的解法,如下:
' P K1 E5 Y( i$ v假设三堆棋子的个数的二进制表示分别是a, b, c,用^来表示二进制的异或。
5 W8 c* k3 N- c u如果a^b^c=0,则后拿的赢,反之,则先拿的赢。
6 Q. t& ?/ |! o
. `; i& z$ L9 c p如何赢:
; E& t: q1 i, q3 k+ x+ P如果a^b^c不等于0,那么先拿的人总可以做到每次拿完棋子后,使得
# H/ i7 F3 N( w3 u! O/ s剩下的三堆棋子的个数(a1,b1,c1) 满足1 H! ?" F$ V1 F) r) G, O
a1^b1^c1=0 (本题中,先拿的人应该从9里面拿4个)
7 H6 ~: A( T# f, b: v; N, f) |
3 B8 F: A& ]3 k' Y( u( I( s" @而后拿的那个人无论拿哪一堆都会破坏这个等式的成立。如果先拿的人每次拿完后,5 r+ m' g# s" b3 \! p
总是使的剩下的棋子数满足这个等式,后拿的人每次都破坏这个等式,也就不可能4 a% Z# g, C) r0 w2 ?2 {# E' t
达到三堆全0的状态,那么获胜的必然是先拿的人了。
4 s% A7 o8 f. T9 Q6 r
6 b c j/ H5 L r O如果一开始三堆棋子的数就满足a^b^c=0,那么先拿的必先破坏这个等式,1 i+ r6 [$ y' ]: t0 D5 O2 i$ s
后拿的人可以在每次拿棋子后满足这个等式,就获胜了。/ v( D- n0 |$ E. O0 F
# M( D( Q- E M$ W$ s0 _+ APS:PM偶个空间^_^ |
|