您的位置:首页 > 其它

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

2016-03-02 14:00 363 查看
最少取件数 是1的时候 核心代码是

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


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

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

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


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

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

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

#include<stdio.h>
int main()
{
int q,n,p;
while(scanf("%d%d%d",&n,&p,&q)!=EOF)
{
if(n%(q+p)==0||n%(q+p)>p)
printf("WIN\n");
else
printf("LOST\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: