博弈论——巴什博弈Bash Game

题目描述
有 1 堆石子,总个数是 n ,两名玩家轮流在石子堆中拿石子,每次至少取 1 个,至多取 m 个。取走最后一个石子的玩家为胜者。判定先手和后手谁胜。

结论: n%(m+1)=0时,先手必败;否则先手必胜。

证明:
①当m>=n时,显然先手必胜。
②当m+1=n时,无论先手取多少个,后手都能一次全部取完,先手必败。
③当n%(m+1)=0时,假设先手取了x个,那么后手一定可以取(m+1)-x个。因此无论先手怎么取,聪明的后手都会使得最后的物品总数量是m+1的倍数,慢慢的就会到②的情况,因此先手必败。
④当n%(m+1)!=0时,先手就可以先取n%(m+1)个物品,这样就会丢下n%(m+1)=0的局面给对面,那么后手必败,先手必胜。

分析:这题可以自己多试几个数据,然后就可以得出上方的这个结论,也可以利用逻辑性推理来实现。

代码如下:

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,m;cin>>n>>m;
    if(n%(m+1)==0)cout<<"先手必败"<<endl;
    else cout<<"先手必胜"<<endl;
}
  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

布布要成为最负责的男人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值