|
|
发表于 2006 年 1 月 1 日 14:25:11
|
显示全部楼层
答案是:先拿的人赢。* s5 S" t. e. q" ^- W* f7 C
对于三堆棋子的问题有一个通用的解法,如下:
; c) G" P* c2 y% \3 c3 q: E6 L+ t; _假设三堆棋子的个数的二进制表示分别是a, b, c,用^来表示二进制的异或。0 x: k* e g2 o' ]! ^
如果a^b^c=0,则后拿的赢,反之,则先拿的赢。9 d) M$ f' f! p* |; L
& Z4 S* t1 Z9 m6 i如何赢:6 A0 v+ n: H* z: N4 f% \$ h
如果a^b^c不等于0,那么先拿的人总可以做到每次拿完棋子后,使得
8 `2 r& k# c/ _4 a, [7 W: ~剩下的三堆棋子的个数(a1,b1,c1) 满足3 X# Q) \8 @% I c9 p
a1^b1^c1=0 (本题中,先拿的人应该从9里面拿4个)
" @# {6 A! f9 C/ d6 |
2 z! q9 y2 V9 x# z. Y. a而后拿的那个人无论拿哪一堆都会破坏这个等式的成立。如果先拿的人每次拿完后,
5 O/ _( A* F# {% l/ j$ q8 `总是使的剩下的棋子数满足这个等式,后拿的人每次都破坏这个等式,也就不可能
& Q6 M/ O/ {4 a+ x' O$ X8 V( Q+ e达到三堆全0的状态,那么获胜的必然是先拿的人了。
/ y/ X: h# L% k1 Y- Z" a8 o& v+ r( v" B Y/ u
如果一开始三堆棋子的数就满足a^b^c=0,那么先拿的必先破坏这个等式,
* _+ |) ]/ X# y" c- ]! v8 g后拿的人可以在每次拿棋子后满足这个等式,就获胜了。
" r! P- B. K8 v& |9 z7 ^
Z6 M8 y3 v1 [' {; fPS:PM偶个空间^_^ |
|