|
|
发表于 2006 年 1 月 1 日 14:25:11
|
显示全部楼层
答案是:先拿的人赢。
& Z6 n( O2 W. I8 v. _. U对于三堆棋子的问题有一个通用的解法,如下:. y! j+ Q. C( p2 R
假设三堆棋子的个数的二进制表示分别是a, b, c,用^来表示二进制的异或。
, T/ G7 p, U5 @如果a^b^c=0,则后拿的赢,反之,则先拿的赢。$ O6 U/ |+ H* w/ g4 z! O
: F0 Q7 f" R5 V: s/ g& ?+ A; k$ b如何赢:
: v, }' E; U. k# |; {如果a^b^c不等于0,那么先拿的人总可以做到每次拿完棋子后,使得
1 v2 r# @9 C: w- ^& K7 x$ U剩下的三堆棋子的个数(a1,b1,c1) 满足/ T$ e6 r% Z/ ]" o) b
a1^b1^c1=0 (本题中,先拿的人应该从9里面拿4个)# w! s" D# E2 r: `5 p- D
2 U3 P( {. w+ `' T/ C8 i
而后拿的那个人无论拿哪一堆都会破坏这个等式的成立。如果先拿的人每次拿完后,' \1 R4 O; V7 G" M' ?
总是使的剩下的棋子数满足这个等式,后拿的人每次都破坏这个等式,也就不可能
. b) K2 ]& p2 h% ~& f; B达到三堆全0的状态,那么获胜的必然是先拿的人了。5 y8 @. v( R! J. `3 _% J
: z& A5 S3 L4 O% w2 k$ s0 ~1 g如果一开始三堆棋子的数就满足a^b^c=0,那么先拿的必先破坏这个等式,. @9 s& [& Q( t0 c
后拿的人可以在每次拿棋子后满足这个等式,就获胜了。: d$ g# ]/ x' e. g
6 ]! d1 e- u- V) DPS:PM偶个空间^_^ |
|