|
|
发表于 2006 年 1 月 1 日 14:25:11
|
显示全部楼层
答案是:先拿的人赢。8 J% ^! _! Q: H& X; O' P4 h
对于三堆棋子的问题有一个通用的解法,如下:) X: j$ Y2 \4 a: ^$ y/ D; ^( r3 I
假设三堆棋子的个数的二进制表示分别是a, b, c,用^来表示二进制的异或。
6 |2 b- q' N# X M) j如果a^b^c=0,则后拿的赢,反之,则先拿的赢。
" m& [' ], |. O- g* q9 _3 ]' @: ]7 y
如何赢:
6 q/ h2 j! E) u" D" L/ e6 N8 f如果a^b^c不等于0,那么先拿的人总可以做到每次拿完棋子后,使得* V4 _. c$ H7 a8 L( ^9 b
剩下的三堆棋子的个数(a1,b1,c1) 满足
, e& L$ `( S; G9 H& pa1^b1^c1=0 (本题中,先拿的人应该从9里面拿4个)
R1 F% ]: g2 ^% h
; D6 L$ q( n/ T7 {0 o7 k而后拿的那个人无论拿哪一堆都会破坏这个等式的成立。如果先拿的人每次拿完后,
?- L2 C& J9 }+ s) n4 ~# E总是使的剩下的棋子数满足这个等式,后拿的人每次都破坏这个等式,也就不可能7 A% c0 [! K0 k8 q. {/ i
达到三堆全0的状态,那么获胜的必然是先拿的人了。" L& R4 ?- o5 s7 M# z3 G( U/ z; U5 E
' E! P2 q/ ~/ Z/ ~9 F0 D: r
如果一开始三堆棋子的数就满足a^b^c=0,那么先拿的必先破坏这个等式,% A' A1 z* t4 b( G# k
后拿的人可以在每次拿棋子后满足这个等式,就获胜了。3 d! g' p- q7 k8 a. b. e4 O# J$ N
" j5 _2 u4 g1 N
PS:PM偶个空间^_^ |
|