|
|
发表于 2006 年 1 月 1 日 14:25:11
|
显示全部楼层
答案是:先拿的人赢。1 u* {# ?7 g/ z, |
对于三堆棋子的问题有一个通用的解法,如下:
; K8 Z( }3 t, |0 ~$ S# ~假设三堆棋子的个数的二进制表示分别是a, b, c,用^来表示二进制的异或。8 c9 w! I5 ]6 p# W8 a
如果a^b^c=0,则后拿的赢,反之,则先拿的赢。4 W& Z' ?9 c' Y+ X8 k" U
" U* F1 G$ {9 g9 P5 w& @4 S
如何赢:
% b, C$ x- H9 V' D' q6 D5 g如果a^b^c不等于0,那么先拿的人总可以做到每次拿完棋子后,使得
+ D9 I+ B/ d( C3 Z6 s剩下的三堆棋子的个数(a1,b1,c1) 满足, @* T7 R: I) |9 D% g# a+ H
a1^b1^c1=0 (本题中,先拿的人应该从9里面拿4个). l4 T$ e, }' ? g- Q% |
& |7 N7 E5 z/ A! Q+ Q而后拿的那个人无论拿哪一堆都会破坏这个等式的成立。如果先拿的人每次拿完后,* o1 b: y r. ~1 g* G: X: i
总是使的剩下的棋子数满足这个等式,后拿的人每次都破坏这个等式,也就不可能
5 S: K/ }7 y( j达到三堆全0的状态,那么获胜的必然是先拿的人了。
) {0 g7 P# Z0 p3 f
i& I5 F% w2 M2 k* k如果一开始三堆棋子的数就满足a^b^c=0,那么先拿的必先破坏这个等式,8 y: R9 d: k4 a4 E8 Q/ L
后拿的人可以在每次拿棋子后满足这个等式,就获胜了。
5 r+ Z2 K$ h) R$ C2 P& [9 x) v- ]
PS:PM偶个空间^_^ |
|