|
发表于 2006 年 1 月 1 日 14:25:11
|
显示全部楼层
答案是:先拿的人赢。* A+ K+ O+ P- C* M. c: ^
对于三堆棋子的问题有一个通用的解法,如下:% G% I# }( H$ g2 H
假设三堆棋子的个数的二进制表示分别是a, b, c,用^来表示二进制的异或。
4 q n4 K) s; Z/ i如果a^b^c=0,则后拿的赢,反之,则先拿的赢。
0 U4 [$ t8 o8 f/ K: v2 F
$ Q- b, [1 X5 ~6 X如何赢:
9 X% C4 }* B* Z; m+ e. l3 N) c如果a^b^c不等于0,那么先拿的人总可以做到每次拿完棋子后,使得) ~/ o _9 L2 C' K; \6 ?7 b
剩下的三堆棋子的个数(a1,b1,c1) 满足
* a. p# ]1 v" @2 n+ Qa1^b1^c1=0 (本题中,先拿的人应该从9里面拿4个)5 _* k; B% p S
4 i% Q5 }- A, ^3 e而后拿的那个人无论拿哪一堆都会破坏这个等式的成立。如果先拿的人每次拿完后,
5 m0 A& X4 ^( I1 g2 ^* M总是使的剩下的棋子数满足这个等式,后拿的人每次都破坏这个等式,也就不可能
* L2 R2 M4 Q) }* z' a达到三堆全0的状态,那么获胜的必然是先拿的人了。
) w# E% K; O4 l" I% k6 M e
; T) F+ U7 O7 Y# H' O& M如果一开始三堆棋子的数就满足a^b^c=0,那么先拿的必先破坏这个等式,5 ?! e$ @7 l6 F4 o- c' H# v
后拿的人可以在每次拿棋子后满足这个等式,就获胜了。. R4 u g8 w& l7 R
$ K! K r( H4 t8 h% Q( J3 NPS:PM偶个空间^_^ |
|