|
|
发表于 2006 年 1 月 1 日 14:25:11
|
显示全部楼层
答案是:先拿的人赢。6 d6 h- t$ T' O- ?+ m7 G- Z Y
对于三堆棋子的问题有一个通用的解法,如下:/ x" i3 z2 h3 E# k' }; Z
假设三堆棋子的个数的二进制表示分别是a, b, c,用^来表示二进制的异或。
5 w2 t# C- G8 d& i! R( j/ r如果a^b^c=0,则后拿的赢,反之,则先拿的赢。
" t v( @7 T" `* b3 d9 j8 v Y5 ^/ Y# F/ p
如何赢:
$ I% S r# X3 I如果a^b^c不等于0,那么先拿的人总可以做到每次拿完棋子后,使得
8 F5 @8 m3 Q0 o+ a% d& d剩下的三堆棋子的个数(a1,b1,c1) 满足1 {4 U5 P/ W% G
a1^b1^c1=0 (本题中,先拿的人应该从9里面拿4个)2 E6 d3 V* s# I; i9 h$ x; U, w
* K, g( [6 x5 M
而后拿的那个人无论拿哪一堆都会破坏这个等式的成立。如果先拿的人每次拿完后,* I: n9 f, t) e: R# x7 r# Y
总是使的剩下的棋子数满足这个等式,后拿的人每次都破坏这个等式,也就不可能3 _5 {9 i7 ~+ y# R' A9 ~! x5 F
达到三堆全0的状态,那么获胜的必然是先拿的人了。
/ E+ O, v4 W: K& w+ q+ K1 V5 q# z5 n8 J
如果一开始三堆棋子的数就满足a^b^c=0,那么先拿的必先破坏这个等式,4 I; O# q0 P* P3 C4 t% I
后拿的人可以在每次拿棋子后满足这个等式,就获胜了。
+ Q4 O/ D) b5 O$ v+ O! ~% B$ q) x0 Z) x/ R
PS:PM偶个空间^_^ |
|