|
|
发表于 2006 年 1 月 1 日 14:25:11
|
显示全部楼层
答案是:先拿的人赢。' o) t. g* \' h6 {, y: G! b
对于三堆棋子的问题有一个通用的解法,如下:
, ^4 s# Z, k% V3 e z# @假设三堆棋子的个数的二进制表示分别是a, b, c,用^来表示二进制的异或。" d2 C* g% l2 [# [$ V, H. H
如果a^b^c=0,则后拿的赢,反之,则先拿的赢。
, z2 d3 V- s# l! I" z% t1 _4 J+ s+ O2 c* | L7 X0 x$ r
如何赢:3 V9 l, m& q( i$ n. D5 o1 I$ Z+ L
如果a^b^c不等于0,那么先拿的人总可以做到每次拿完棋子后,使得
4 L1 W7 M) P& s9 q5 q$ n" M: _剩下的三堆棋子的个数(a1,b1,c1) 满足
0 y2 U9 p) f$ A0 R7 L, `( Xa1^b1^c1=0 (本题中,先拿的人应该从9里面拿4个)
) t7 c, J( j9 n+ x: p1 M6 U) I! d3 ~7 ?/ C! i
而后拿的那个人无论拿哪一堆都会破坏这个等式的成立。如果先拿的人每次拿完后, U7 g. J+ C/ J9 [, a
总是使的剩下的棋子数满足这个等式,后拿的人每次都破坏这个等式,也就不可能9 n( y/ F. }$ D
达到三堆全0的状态,那么获胜的必然是先拿的人了。
% D Y+ }. P( w' s- G3 ^: B$ }2 C+ E8 p6 ?
如果一开始三堆棋子的数就满足a^b^c=0,那么先拿的必先破坏这个等式,
& A, X; Y. a: p后拿的人可以在每次拿棋子后满足这个等式,就获胜了。
: [# \$ `7 m; n0 I+ Y! j( I8 q7 h
% v# v) n% T h: U1 sPS:PM偶个空间^_^ |
|