Problem A. 欧几里德的游戏

时间限制 1000 ms
内存限制 128 MB

题目描述

  欧几里德的两个后代Stan和Ollie正在玩一种数字游戏,这个游戏是他们的祖先欧几里德发明的。给定两个正整数M和N,从Stan开始,从其中较大的一个数,减去较小的数的正整数倍,当然,得到的数不能小于0。然后是Ollie,对刚才得到的数,和M,N中较小的那个数,再进行同样的操作……直到一个人得到了0,他就取得了胜利。下面是他们用(25,7)两个数游戏的过程:
Start:25 7
Stan:11 7
Ollie:4 7
Stan:4 3
Ollie:1 3
Stan:1 0
Stan赢得了游戏的胜利。
现在,假设他们完美地操作,谁会取得胜利呢?

输入数据

第一行为测试数据的组数 CC 。下面有 CC 行,每行为一组数据,包含两个正整数 M,NM,N 。 (M,N(M,N 不超过长整型。)

输出数据

对每组输入数据输出一行,如果Stan胜利,则输出“Stan wins”;否则输出“Ollie wins”

样例输入

2
25 7
24 15

样例输出

Stan wins
Ollie wins

思路:

解析:因为每次都是最优化操作,显然当一个人可以有两种选择时,显然,如果奇数倍不赢,偶数倍必赢 即当maxNum/minNum>=2时,那个人必赢,
当一个人只有一次选择时,即m/n=1时,他只能操作,但并不能确定输赢,这时候可以判断什么时候maxNum%minNum=0 eg,7/1 那么他的对手必输。即他必赢

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<math.h>using namespace std;void output(bool flag)
{if(flag)cout<<"Stan wins"<<endl;elsecout<<"Ollie wins"<<endl;
}//解析:因为每次都是最优化操作,显然当一个人可以有两种选择时,显然,如果奇数倍不赢,偶数倍必赢 即当maxNum/minNum>=2时,那个人必赢,
//当一个人只有一次选择时,即m/n=1时,他只能操作,但并不能确定输赢,这时候可以判断什么时候maxNum%minNum=0 即 7/1 那么他的对手必输。即他必赢
bool solve(long long maxNum,long long minNum,long long time)
{if(maxNum%minNum==0||maxNum/minNum>=2)return time&1? false :true;//time odd ollie win 偶数 stan winreturn solve(minNum,maxNum%minNum,time+1);
}int main()
{ios::sync_with_stdio(false);int c;cin>>c;long long m,n;while(c--){cin>>m>>n;output(solve(max(m,n),min(m,n),0));}return 0;
}

《博弈论》欧几里德的游戏相关推荐

  1. P1290 欧几里德的游戏

    P1290 欧几里德的游戏 题意: 给定两个正整数 M 和 N,从 Stan 开始,从其中较大的一个数,减去较小的数的正整数倍,当然,得到的数不能小于 0.然后是 Ollie进行同样的操作,直到一个人 ...

  2. 洛谷——P1290 欧几里德的游戏

    P1290 欧几里德的游戏 题目描述 欧几里德的两个后代Stan和Ollie正在玩一种数字游戏,这个游戏是他们的祖先欧几里德发明的.给定两个正整数M和N,从Stan开始,从其中较大的一个数,减去较小的 ...

  3. 【博弈论】Nim游戏

    [博弈论]Nim游戏 提到博弈论,比较经典的就是Nim游戏. Nim游戏的大致内容就是:给了好几堆石子,两个人,每个人轮流从某一堆中拿取任意数量的石子,最先取完石子的那一方即可获胜,注意:两个人都用的 ...

  4. 博弈论——关于Nim游戏和SG函数的几个链接

    今天做了一道博弈论的题目,正好去找找相关资料再复习一下. 网上能找到的都是同样的文章,不过我觉得足够了,Nim游戏百度百科里说的很详细,包括公式.证明之类的 http://baike.baidu.co ...

  5. 博弈论(Nim游戏、有向图游戏之SG函数)

    这里写目录标题 经典NIM游戏 Nim游戏属于公平组合游戏ICG 有向图游戏(SG函数) Mex运算 SG函数 单个有向图(一堆石子) 求SG值(记忆化递归) 有向图游戏的和 ,(多个有向图(多堆石子 ...

  6. 博弈论·公平组合游戏 学习笔记

    文章目录 公平组合游戏ICG N状态和P状态 游戏图 Sprague-Grundy SG函数 Nim游戏 游戏的和 SG定理 写在前面:发现是好久之前存在草稿里的,偶然间翻出来了,稍微完善了一下. 公 ...

  7. 博弈论——公平组合游戏与SG函数

    参考自算法竞赛进阶指南 公平组合游戏与有向无环图 一个博弈游戏被称为公平组合游戏(ICG)当且仅当其同时满足3个条件 由两名玩家交替行动 游戏任意时刻可进行的操作与轮到哪名玩家无关 不能进行操作的玩家 ...

  8. [博弈论]移棋子游戏

    https://www.acwing.com/problem/content/1321/ 思路: 求所有棋子的sg异或之和, 记忆化搜索 得到当前结点后继的这些点的sg值之和,放到set里面(哈希表也 ...

  9. 闲来无事刷水题、简单博弈论专题、sg函数、洛谷

    记 今天闲来无事,不想刷codeforces了,到洛谷提高组训练营找几道水题刷着玩玩(虽然自己早已过了打OI的年纪)- 简单博弈论专题 P1199 三国游戏 这么考虑,由于电脑总是不能让我搭配出当前能 ...

最新文章

  1. html中表格自动换行
  2. MFC工程 : view.h 包含错误, 提示 undeclared identifier 等错误
  3. tornado函数和类的导入和ui_modules  , ui_methods
  4. 苏格拉底与失恋者的对话————最经典的失恋哲理 ...
  5. spring boot中的注解
  6. 将Windows8或WindowsServer2012装在VHD上
  7. 【dfs+理解题意+构造】【待重做】codeforces E. Ice cream coloring
  8. SmartFoxServer 2X 安装
  9. VS2015,C++MFC建立可视化界面第一天
  10. 昂达v891w可以用u盘linux,拆机小能手——ONDA 昂达 V891w CH 双系统电脑国产平板 拆解清灰!...
  11. CVPR2021论文列表(中英对照)
  12. linux删除卸载npm,卸载安装node npm (Mac linux )
  13. 笔记本过热、电脑cpu过热、限制CPU运行功率上限,轻松设置解决过热
  14. 流体机械原理及设计08
  15. 第 5 章 函数和代码复用
  16. linux项目部署、Nginx详解
  17. 透过数据读懂纷繁世界 中译语通“NexMagic再·奇迹”年度峰会召开
  18. python爬取qq电话_用Python爬取整个学院MM的电话和QQ,爬虫这也太霸道了!
  19. axure 教务系统_【Axure原型推荐】第1期 在线教育小程序原型
  20. 2021-2027全球与中国健身俱乐部和健身房管理软件市场现状及未来发展趋势

热门文章

  1. 了解网络攻击:类型、策略和技术
  2. 运行mongodb报错IMKClient Stall detected
  3. 非财务人员财务培训_为非财务领导的公司工作
  4. 创业项目得到了 200 万元天使投资,该怎么招人?
  5. linux多网卡聚合
  6. 程序员常用不常见很难得的地址大全转
  7. 【ESP8266之AT开发】五、实战连接Yeelink云平台,实现远程控制
  8. 龙芯3A4000服务器部署kvm虚拟机指导
  9. 【MySQL体系结构】MySQL8.0物理文件结构
  10. python-docx删除段落(含回车符)v202111221750