取石子

取石子,最基本的,

两人取一堆,可以取1-m个,共有n个最后取完的人胜利,问先手胜利还是后手胜利

要知道这个问题,我们首先要考虑

我最后一次要取完所以

最后一次对手取完后剩下的石子必须小于等于m个

而对手可以取1-m个

所以我上次取完后必须剩下m+1个

才能保证我必胜那么也就是说只要我取完后剩余的石子数是(1+m)的倍数

那么无论对手怎么取都都无法取成(1+m)的倍数且对手取完后必定有余数

而可以认为0是(1+m)的一个倍数所以对手永远取不到0;

所以如果n是(1+m)的倍数,后手胜利否则先手胜利;


然后进阶一点的就是有数堆石子,每堆有不同的数目,每次可以取任意一堆的任意个(注意至少取1个,可以取完这一堆)

然后我们要考虑,我怎样才能赢,我能赢的结果就是我取完后就是0,

同时我们要考虑有些操作其实类似于无效操作,例如只有2堆,数目相同,那么不管你怎么取,我就和你取相同的,则我必赢

那么这种操作某种程度就是无效的因为有个还原的过程,也就是说你操作后打破了某中平衡,我再进行操作还原这种平衡,

只要我保证这种平衡的最后一定是我赢,那么我就会胜利,而取n堆石子所用到的异或也是如此先将石子数目都化成2进制

进行异或即相同为0,不同为1,(因为在同一位都为1的时候,我可以进行上面的操作,即你取我也取)最后会得到一个数,

如果这个数为0,而同时0的二进制也是0,那么我可以将它看作一个平衡,不管你进行怎样的操作,我都可以将它还原,

而且我可以保证,你进行操作后,这个平衡必会被打破,也就是说你永远都无法得到0,那么我就必赢。这个时候就是后手必赢;

如果不为0那么进行操作使它变成0,先手赢.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值