HDU 1525 Euclid Game
题目大意:
给定2个数a , b,假定b>=a总是从b中取走一个a的整数倍,也就是让 b-k*a(k*a<=b)
每人执行一步这个操作,最后得到0的人胜利结束游戏
(0,a)是一个终止态P(必胜态)
始终假设b>=a
那么(a,b)b%a==0 , 那么就是 必败态 N
如果2*a>b>a 那么只能选择进入 (a , b-a)不确定什么状态
因为每个人都很聪明,所以对于碰到一个a ,b的局面
如果 b>a*2 , 那么应该知道 (a , b%a) 是不是一个必胜态,如果不是,那么这个聪明人就总会进入(a , b%a+a) ,就能逼迫对方进入 (a , b%a) 这个必败态
如果 (a , b%a) 是一个必胜态,那么聪明人就会自己进入这个状态
所以 b>2*a的时候,下个人肯定是必胜的,也就是下个人必然进入必胜态,所以这是一个必败态
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; bool dfs(int a , int b)
{
if(a>b) swap(a , b);
if(a == ) return true;
if(b%a == || b > *a) return false; bool flag1 = dfs(a , b%a);
bool flag2 = false;
if(b > *a) flag2 = dfs(a , b%a+a);
if(flag1 || flag2) return false;
return true;
} int main()
{
// freopen("a.in" , "r" , stdin);
int a,b;
while(scanf("%d%d" , &a , &b) , a||b)
{
if(dfs(a , b)) puts("Ollie wins");
else puts("Stan wins");
}
return ;
}
HDU 1525 Euclid Game的更多相关文章
- HDU 1525 Euclid's Game 博弈
Euclid's Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- HDU 1525 Euclid's Game (博弈)
Euclid's Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- hdu 1525 Euclid's Game 博弈论
思路:两个数a和b,总会出现的一个局面是b,a%b,这是必然的,如果a>=b&&a<2*b,那么只有一种情况,直接到b,a%b.否则有多种情况. 对于a/b==1这种局面, ...
- HDU 1525 Euclid's Game
题目大意: 题目给出了两个正数a.b 每次操作,大的数减掉小的数的整数倍.一个数变为0 的时候结束. 谁先先把其中一个数减为0的获胜.问谁可以赢.Stan是先手. 题目思路: 无论a,b的值为多少,局 ...
- hdu 1525 Euclid's Game【 博弈论】
Two players, Stan and Ollie, play, starting with two natural numbers. Stan, the first player, subtra ...
- HDU 1525 类Bash博弈
给两数a,b,大的数b = b - a*k,a*k为不大于b的数,重复过程,直到一个数为0时,此时当前操作人胜. 可以发现如果每次b=b%a,那么GCD的步数决定了先手后手谁胜,而每次GCD的一步过程 ...
- A - 无聊的游戏 HDU - 1525(博弈)
A - 无聊的游戏 HDU - 1525 疫情当下,有两个很无聊的人,小A和小B,准备玩一个游戏,玩法是这样的,从两个自然数开始比赛.第一个玩家小A从两个数字中的较大者减去两个数字中较小者的任何正倍数 ...
- HDU 1525 (博弈) Euclid's Game
感觉这道题用PN大法好像不顶用了,可耻地看了题解. 考虑一下简单的必胜状态,某一个数是另一个数的倍数的时候是必胜状态. 从这个角度考虑一下:游戏进行了奇数步还是偶数步决定了哪一方赢. 如果b > ...
- Day11 - H - Euclid's Game HDU - 1525
Two players, Stan and Ollie, play, starting with two natural numbers. Stan, the first player, subtra ...
随机推荐
- Ghost系统操作记录
1.下载Symantec Ghost应用. 2.下载老毛桃PE工具箱. 3.利用老毛桃PE工具箱制作启动U盘. 4.拷贝Ghost应用至U盘. 5.设置计算机启动顺序为U盘启动. 6.重启计算机进入P ...
- jquery + ajax 实现多条件查询
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="JquerySort.aspx. ...
- VMware虚拟机下载与安装
VMware下载与安装 一.虚拟机的下载 1.进入VMware官网,点击左侧导航栏中的下载,再点击图中标记的Workstation Pro,如下图所示. 2.根据操作系统选择合适的产品,在这里以Win ...
- Objective-C Foundation 框架 Example :Looking for Files 查找文件
Objective-C Foundation 框架 Example :Looking for Files 查找文件 NSFileManager. The NSFileManager class ...
- 在SQLServer 2005附加SQLServer 2008数据库异常处理
远程服务器软件系统不算新,数据库是SQL Server 2005.本地开发基本是用新的软件系统.数据库采用SQL Server 2008. 这样在用远程服务器SQL 2005选择附加SQL 2008的 ...
- 类的封装,property特性,类与对象的绑定方法和非绑定方法,
类的封装 就是把数据或者方法封装起来 为什么要封装 封装数据的主要原因是:保护隐私 封装方法的主要原因是:隔离复杂度(快门就是傻瓜相机为傻瓜们提供的方法,该方法将内部复杂的照相功能都隐藏起来了,比如你 ...
- width:100px; min-width:100% 解释:宽度大于100px 就是100% 小于100px 就是100像素
<div style="width:100px; background-color: aqua; min-width:100%">kkk</div>
- SqlServer数据库练习20190211
一条update语句,修改多个条件 update orderdt_jimmy set qty = (case else qty end); 好了,就这样
- react-native 手势操作和 react-naviagation 组件的手势返回功能的冲突解决
上篇我们说到过在react-native触摸及手势事件 那么我在项目中遇到的问题是在react-navigation中的子页面,希望保留在ios中的效果:从左侧往右侧滑动为退出该页面. 但是希望我在滑 ...
- 笔试算法题(13):反转链表 & 左旋转字符串
出题:反转链表(递归和非递归解法): 分析:有递归跟非递归实现,注意对原始链表头节点的处理,因为其他节点都指向下一个节点,其需要指向NULL: 解题: struct Node { int v; Nod ...