1218:取石子游戏时间限制: 1000 ms         内存限制: 65536 KB
提交数: 10430     通过数: 4939
【题目描述】
有两堆石子,两个人轮流去取。每次取的时候,只能从较多的那堆石子里取,并且取的
数目必须是较少的那堆石子数目的整数倍,最后谁能够把一堆石子取空谁就算赢。比如初始的时候两堆石子的数目是25和7。25 7 -->  11 7    -->  4 7 -->  4 3 -->  1 3 -->  1 0
选手1取        选手2取        选手1取        选手2取        选手1取
最后选手1(先取的)获胜,在取的过程中选手2都只有唯一的一种取法。给定初始时石子的数目,如果两个人都采取最优策略,请问先手能否获胜。【输入】
输入包含多数数据。每组数据一行,包含两个正整数a和b,表示初始时石子的数目。输入以两个0表示结束。【输出】
如果先手胜,输出"win",否则输出"lose"。【输入样例】
34 12
15 24
0 0
【输出样例】
win
lose
【提示】
假设石子数目为(a,b)且a >= b,如果[a/b] >= 2则先手必胜,如果[a/b]<2,那么先手
只有唯一的一种取法。[a/b]表示a除以b取整后的值。

例如题目
25 7 --> 11 7 --> 4 7 --> 4 3 --> 1 3 --> 1 0
先:取(25/7-1)*7=14 ->11 7
后:只能取7个 ->4 7
先:只能取4个 ->4 3
后:只能取3个 ->1 3
先手胜

39 16
先:取(39/16-1)*16=16个 ->23 16
后:只能取16个 ->7 16
先:取(16/7-1)*7=7个 ->7 9
后:只能取7个 -> 7 2
先:取(7/2-1)*2=4个 ->3 2
后:只能取2个 ->1 2
先手胜

所以只要(n>m)n/m>=2时,先手必胜,每次取(n/m-1)*m个即可
如果n/m=1时,就需要判断最后一个取的是先手还是后手了

#include<bits/stdc++.h>
using namespace std;int main(){int n,m;while(cin>>n>>m,n,m){if(n==0&&m==0)break;if(n<m)swap(n,m);if(n/m>=2){            //n/m>=2时,先手必胜,每次取(n/m-1)*m即可 cout<<"win"<<endl;continue;}int i=1;while(n/m==1){       //n/m==1时,就看进行取石头的次数是奇数还是偶数//如果是奇数先手胜,偶数则后手胜               int x=n;n=m;m=x%n;i++;            }if(i%2==1) cout<<"win"<<endl;else cout<<"lose"<<endl;} return 0;
}

博弈论——1218:取石子游戏相关推荐

  1. 博弈论之取石子游戏的学习

    以下内容来自转载: 博弈问题简介 所讨论的博弈问题满足以下条件: 玩家只有两个人,轮流做出决策 游戏的状态集有限,保证游戏在有限步后结束,这样必然会产生不能操作者,其输 对任何一种局面,胜负只决定于局 ...

  2. 信息学奥赛一本通(1218:取石子游戏)

    1218:取石子游戏 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 8837     通过数: 4144 [题目描述] 有两堆石子,两个人轮流去取.每次取的时候, ...

  3. POJ1067 取石子游戏 跪跪跪,很好的博弈论

    取石子游戏 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 29951   Accepted: 9814 Descriptio ...

  4. 1218:取石子游戏

    1218:取石子游戏时间限制: 1000 ms 内存限制: 65536 KB 提交数: 4462 通过数: 2049 [题目描述] 有两堆石子,两个人轮流去取.每次取的时候,只能从较多的那堆石子里取, ...

  5. 信息学奥赛一本通 1218:取石子游戏 | OpenJudge NOI 2.5 6266:取石子游戏

    [题目链接] ybt 1218:取石子游戏 OpenJudge NOI 2.5 6266:取石子游戏 [题目考点] 1. 博弈:完全信息博弈 博弈树: 博弈树的结点对应于某一个棋局,其分支表示走一步棋 ...

  6. 【POJ】1067 取石子游戏(博弈论)

    Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后 ...

  7. 博弈论——《取石子》《取石子游戏》

    传送门:活动 - AcWing 思路: 结论:在所有堆的石子个数>1的情况下 只要石子数+石子堆数-1==b是奇数,那么先手必胜.b是不计算所有个数为1的石子堆得出的. b是奇数的情况下一定存在 ...

  8. 4005. 取石子游戏

    Powered by:NEFU AB-IN Link 文章目录 4005. 取石子游戏 题意 思路 代码 4005. 取石子游戏 题意 Alice 和 Bob 正在玩一个取石子游戏. 共有 n个石子, ...

  9. 搜索与回溯:取石子游戏

    1218:取石子游戏 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 4790     通过数: 2208 [题目描述] 有两堆石子,两个人轮流去取.每次取的时候, ...

最新文章

  1. 存储安全 系统的最后一道防线
  2. 打开word或者office程序报错:Microsoft Visual C++ Runtime Library. Runtime Error!
  3. MLP 之手写数字识别
  4. Mysql实现企业级日志管理、备份与恢复
  5. 投资人赞上海某寺很靠谱 饿了么曾获10万元天使投资
  6. 【计算机组成原理】CPU
  7. MTCNN可攻破?华为提出一种可复制、可靠的攻击方法
  8. Spring4.x(15)---SpringEL-三目运算
  9. 通过hsv筛选颜色 python_OpenCV-Python 光流介绍(附代码)
  10. postgresql 数据库基本操作
  11. 【电子电路】电子基础基本知识和面试要点
  12. R语言中混合线性模型的实现以及参数解析
  13. OSChina 周四乱弹 —— 你从小继承了程序员基因
  14. 设计师要懂心理学pdf
  15. WIN7共享WIFI
  16. 金石无线服务器效果怎么样,天线效果不好?快来看看是不是这几个地方出了问题!...
  17. python pandas的read_html方法爬取网页表格
  18. 熬夜整理了2021年Python最新学习资料,分享给学弟学妹们【大学生必备】
  19. 鸿蒙系统内核为什么还是安卓,鸿蒙系统和安卓的区别
  20. Mysql培训第二天

热门文章

  1. 闲鱼无货源赚钱的核心玩法?
  2. 这个牛逼的国产低代码生成器!现在开源了
  3. win11重建图标缓存
  4. docker使用手册
  5. docusign文档打不开_DocuSign - 用手机签署你的个人文件,完美的无纸化办公就在这里 - Android 应用 - 【最美应用】...
  6. 2、springboot-基础知识点
  7. java 电力 监测 系统,基于Spring框架的电力负荷管理系统[Java编程]
  8. 发送HTTP POST请求工具类
  9. 如何在免费追剧?Python制作视频解析免费追剧神器
  10. 象棋残局之“以退为进”