巴什博弈------最少取件数 不是1的情况下 hdu---2897

本文深入探讨了在特定取件数规则下,如何通过数学逻辑判断先手者的必胜条件,涉及取件数为1的情况及更复杂场景。通过实例分析,揭示了在不同规则下取得胜利的关键策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最少取件数 是1的时候   核心代码是  

1 //  共有 n 见 物品  一次最少取  一个 最多取 m 个
2 if(n%(m+1)==0)
3     printf("先取者输");

在代码中  可以看到   题目中 一共出现的  三个量  1 , n ,m            

 

当 最少取件数 不是 1的 情况下 怎么办呢   部分同学 应该就想到了  这种 代码 

1 //  共有 n 见 物品  一次最少取  p 个 最多取 q 个
2 if(n%(m+q)==0)
3     printf("先取者输");

然而 只是这样考虑的话 那么  思维就有点 僵硬了 

没有考虑到 其他的 必输 情况 

也就是  当 n%(p+q) 的时候   余数 可能是  大于 最小 可取数的   当 余数 大于最小可取数的时候  对手仍然可以让你 必输 ....说的不清楚   自己用  6  2  3  这三个 数字 检测一下吧

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int q,n,p;
 5     while(scanf("%d%d%d",&n,&p,&q)!=EOF)
 6     {
 7         if(n%(q+p)==0||n%(q+p)>p)
 8             printf("WIN\n");
 9         else
10             printf("LOST\n");
11     }
12     return 0;
13 }

 

转载于:https://www.cnblogs.com/A-FM/p/5234719.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值