|
|
发表于 2006 年 1 月 1 日 14:25:11
|
显示全部楼层
答案是:先拿的人赢。
, E1 ?% J) P8 m$ n' x( C. c; [ h对于三堆棋子的问题有一个通用的解法,如下:
- d) O6 R, F0 }3 K: ?9 i- C假设三堆棋子的个数的二进制表示分别是a, b, c,用^来表示二进制的异或。
8 z: B u" w# h$ \6 v如果a^b^c=0,则后拿的赢,反之,则先拿的赢。
+ e" Z% i( e* o4 Y* Z& _0 v$ l }6 f% u! R
如何赢:$ {( B! \% F/ D9 H! c: K
如果a^b^c不等于0,那么先拿的人总可以做到每次拿完棋子后,使得
2 p( q0 Q& Z. r6 w& y3 @7 W剩下的三堆棋子的个数(a1,b1,c1) 满足 T; o7 M+ [5 r3 b3 P' A7 J
a1^b1^c1=0 (本题中,先拿的人应该从9里面拿4个)
) `) A6 ~( }! D" J8 N8 Z l- @/ Z8 J
而后拿的那个人无论拿哪一堆都会破坏这个等式的成立。如果先拿的人每次拿完后,7 _: ?, k8 T4 v* ^6 K+ E$ ]
总是使的剩下的棋子数满足这个等式,后拿的人每次都破坏这个等式,也就不可能
' ]& d; l* z' Z2 |6 ^% Q达到三堆全0的状态,那么获胜的必然是先拿的人了。
4 W% t2 x. A! ^& ?- ^/ ^5 x2 ^
: i1 L; `; ^0 A如果一开始三堆棋子的数就满足a^b^c=0,那么先拿的必先破坏这个等式,% N3 L8 d1 z& r' B+ }
后拿的人可以在每次拿棋子后满足这个等式,就获胜了。( z* k9 W6 ^) X
P: o; A0 L1 ^; N
PS:PM偶个空间^_^ |
|