csdn英雄会题解之第五届在线编程大赛月赛第三题:石子游戏 --多堆博弈游戏 多堆拈游戏

题目详情

甲乙两人面对若干堆石子,其中每一堆石子的数目可以任意确定。

两人轮流按下列规则取走一些石子,游戏的规则如下:

1.每一步应取走至少一枚石子;

2.每一步只能从某一堆中取走部分或全部石子;

3.如果谁无法按规则取子,谁就是输家。

如果甲乙两人都采取最优的策略,甲先拿,请问,是甲必胜还是乙必胜.

输入格式:

多组数据,每组数据两行,第一行是一个整数N, 2<=N<=10000

下一行是N个正整数,代表每堆的石子数,石子数在32位整数内。

输出格式:

每组测试数据输出一行,如果甲存在必胜策略,输出"Win",否则输出"Lost"

答题说明

输入样例

3

3 3 1

输出样例:

Win

解法

多堆拈游戏有个精巧的解法:

(1)将每堆石子数量用二进制表示:b1,b2,b3...bn;

(2)求b1,b2,b3...bn的二进制数位和ret(忽略进位),即异或值;

(3)当且仅当二进制数位和中包含至少一个1时,为胜局;只包含0

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值