poj 2348 Euclid's Game
题目:
给两个整数a和b,两个人先后用较大的数减去较小数的整数倍,并且保证相减后为非负数。先把一个数变为0的人获胜。
分析:
很显然,当大数是小数的整数倍时为必胜态。
从这道题学会一个叫做自由度的东西,感觉能够为博弈推理提供思路。
博弈基本就是一个推理必胜态和必败态的过程。自由度越低越好推理。
不妨假设b为两个数中的较大数。
如果b-a<a
那么只能选择用b去减a,如果后继态是必胜态,那么该状态是必败态,否则就是必胜态。
如果b-a>a呢?
我们怎么能够转移到自由度较低的情况。
假设x是是的b-x*a<a的整数。
那么我们用b减去(x-1)*a。这个就变成了第一种情况,如果第一种情况是必败态,那么此时就是必胜态。
如果减去(x-1)*a是必胜态呢?那么b-a*x是不是就变成了必败态?(有点绕,仔细想想),所以当前状态还是必胜态。
所以就是比谁先达到自由度高的情况即可。
#include<stdio.h>
#include<algorithm>
using namespace std;
int main( )
{
int a,b;
while(scanf("%d%d",&a,&b)!=EOF)
{
if(a==&&b==)
break; bool f=true ;
while()
{ if(a>b)
swap(b,a);
if(b%a==)
break;
if(b-a>a)
break;
b-=a;
f=!f;
}
if(f)
puts("Stan wins");
else
puts("Ollie wins"); }return ;
}
poj 2348 Euclid's Game的更多相关文章
- poj 2348 Euclid's Game 题解
Euclid's Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9023 Accepted: 3691 Des ...
- POJ 2348 Euclid's Game(辗转相除博弈+自由度分析)
题目链接:http://poj.org/problem?id=2348 题目大意:给你两个数a,b,Stan和Ollie轮流操作,每次可以将较大的数减去较小的数的整数倍,相减后结果不能小于0,谁先将其 ...
- POJ 2348 Euclid's Game 博弈论
http://poj.org/problem?id=2348 顺便说,必应翻译真的好用,比谷歌翻译好用100倍. 很难判断这道题的具体博弈类型. 有两种写法,一种是找规律,一种是推理得到关系后循环(或 ...
- POJ 2348 Euclid's Game(博弈论)
[题目链接] http://poj.org/problem?id=2348 [题目大意] 给出两个数,两个参赛者轮流用一个数减去另一个数的倍数,当一个数为0的时候游戏获胜, 求先手是否必胜 [题解] ...
- POJ 2348 Euclid's Game【博弈】
题目链接: http://poj.org/problem?id=2348 题意: 给定两个数,两个人每次从较大数中减去较小数的倍数,谁先得到0谁获胜,为谁赢? 分析: 令一种可能出现的整数对为(a,b ...
- POJ 2348 Euclid's Game(博弈)题解
题意:有a,b两个数字,两人轮流操作,每次可以选择两个之中较小的数字,然后另一个数字减去选择数字的任意倍数(不能减到负数),直到其中一个为0,不能操作为败 思路:这题用博弈NP思想,必败点和必胜点之间 ...
- POJ 2348 Euclid Game (模拟题)
Euclid's Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7942 Accepted: 3227 Des ...
- POJ 2348 Euclid's Game(简单博弈)
这道题没说a b最大多少,所以要声明为long long型,不然会WA! 道理很简单,(默认a>=b)a和b只有以下三种关系: 1.a%b==0 :这种关系下,可能是a/b为整数,也可能是a和b ...
- POJ 2348 Euclid's Game (博弈)
题意:给定两个整数,两个人轮流操作,每次可以用较大数减去较小数的整数倍,当一个数变成0时,则结束,问谁会胜. 析:很明显如果 a == b 那么就可以直接结束了,那么如果 a > b我们可以交换 ...
随机推荐
- ACdream1430SETI(后缀自动机)
问题: Amateur astronomers Tom and Bob try to find radio broadcasts of extraterrestrial civilizations i ...
- GCC泛型宏
在JAVA和CPP这种OOP语言中,都有泛型类,在C语言可以用宏定义实现泛型函数. main.c #include <stdio.h> #define min(x, y) ({ \ typ ...
- yum配置文件位置
centos的yum配置文件 cat /etc/yum.conf cachedir=/var/cache/yum //yum 缓存的目录,yum 在此存储下载的rpm 包和数据库,默认设置为/var/ ...
- C#调试信息打印到输出窗口
System.Diagnostics.Debug.WriteLine("aaaa");
- Python知识点: os.popen
用例:f = os.popen("%s %s %s" % ("pkg-config", " ".join(args), mod)) pope ...
- RPG游戏地牢设计的29个要点
转自:http://www.gameres.com/491660.html Troy 是一名 RPG 开发者,以整理了一些自己开发地下城 RPG 的经验,开发者不妨参考一下: 1.地下城应该有个地方无 ...
- 二 Akka学习 - actor介绍
一个actorSystem 是一个重量级的结构.它会分配N个线程.所以对于每一个应用来说只用创建一个ActorSystem. Actor是种可怜的“生物”,它们不能独自存活.Akka中的每一个Acto ...
- TS学习之基础类型
1.布尔值 let isDone:boolean = false 2.数字(支持二,八,十,十六进制) let width:number = 20 3.字符串 let name:string = &q ...
- jquery 图片轮换
jquery 图片轮换 1.下载jquery.superslide.2.1.1.js (百度搜索) 2.下载Jquery-1.4.1.js(百度搜索下载) 准备工作好了,下面开始实现 3.html & ...
- centos7安装与配置ansible
此次测试总共有三台机,分别如下: ansible服务器:10.0.0.20 client01:10.0.0.21 client02:10.0.0.22 一.安装ansible 1. python版本需 ...