|
|
发表于 2006 年 1 月 1 日 14:25:11
|
显示全部楼层
答案是:先拿的人赢。
) V9 G0 g7 ~, o0 F( p7 v$ q对于三堆棋子的问题有一个通用的解法,如下:8 @: C( u, g, L1 f+ Z2 V
假设三堆棋子的个数的二进制表示分别是a, b, c,用^来表示二进制的异或。$ @& w3 L1 L& ?# A% c1 m
如果a^b^c=0,则后拿的赢,反之,则先拿的赢。7 H7 \6 o9 P, f, ^: E; q
) x; N! i0 X# d t1 u
如何赢:
{% |% H& R# F: w如果a^b^c不等于0,那么先拿的人总可以做到每次拿完棋子后,使得% x6 s! i0 ]( Q$ a
剩下的三堆棋子的个数(a1,b1,c1) 满足
: i: F3 Q7 Q: T$ E6 {a1^b1^c1=0 (本题中,先拿的人应该从9里面拿4个)
% o; x7 q5 H5 T4 ]
3 f9 s g2 q- E( a而后拿的那个人无论拿哪一堆都会破坏这个等式的成立。如果先拿的人每次拿完后,* v' Y4 L, O. `" F ~& L3 \
总是使的剩下的棋子数满足这个等式,后拿的人每次都破坏这个等式,也就不可能
0 D, p4 s x) ?# t& V3 l- P达到三堆全0的状态,那么获胜的必然是先拿的人了。3 b1 [! D: G9 s# m- Z: R' W
0 {1 s2 o( O: V& \" E1 H6 e" b
如果一开始三堆棋子的数就满足a^b^c=0,那么先拿的必先破坏这个等式,( v; T% Y0 e% [6 H1 @3 [/ G
后拿的人可以在每次拿棋子后满足这个等式,就获胜了。% W y D# M1 `
8 `6 h1 d# K! G# p: f8 S" {PS:PM偶个空间^_^ |
|