POJ 2348 Euclid's Game (博弈找规律 )
来源:互联网 发布:深圳乐易网络是坑吗 编辑:程序博客网 时间:2024/05/23 00:10
题目链接:http://poj.org/problem?id=2348
题目大意:给两个数,选手轮流对这两个数操作,操作的方式把大的数减去小的数的k倍,k可以是1,得到新的两个数。谁先得到一个0,谁就获胜。
首先可以明确的是,大数小于小数的两倍,那么选手只能直接把大的数减去小的数。否则选手的操作有多种。
如果是第一种情况,那么比赛的结果就一定由下一个状态确定了。
即如果(a-b, b)是必胜态,那么(a,b)就是必败态了,a < 2b。
而如果a % b == 0的话,对于当前选手而言是必胜的,当然包括了a = 2b.
如果a > 2b 那么其实是必胜的,因为他又可以转化为第一种情况,x < 2y。这里如果(x, y)是必败的,那么就转化为(x,y),让对手处于劣势,否则转化为(x-y, x)。
所以问题的关键在于谁抢到了后两种情况中的一种。模拟情况即可。
#include<iostream>#include<cstring>#include<cmath>#include<cstdio>#include<algorithm>using namespace std;int main () { int a, b; while (scanf("%d%d", &a, &b), a&&b) { bool flag = 1; while(1) { if(b < a) { swap(a, b); } if(b % a == 0) { break; } if(b - a > a) { break; } b -= a; flag = !flag; } printf("%s", flag?"Stan wins\n":"Ollie wins\n"); } return 0;}
0 0
- POJ 2348 Euclid's Game (博弈找规律 )
- hdu 1525 || poj 2348 Euclid's Game(博弈找规律)
- HDU1525 Euclid's Game (找规律博弈)
- HDU 1525 Euclid's Game (博弈、找规律)*
- POJ 2348 Euclid's Game( 总结规律+组合博弈 )
- HDU 1525 Euclid's Game【博弈 PN找规律】
- HDU 1525 Euclid's Game 找规律博弈
- HDU 1525&&POJ 2348 Euclid's Game 规律博弈(难)
- hdu 1525 Euclid's Game(博弈——找规律)
- POj-2348-Euclid's Game-博弈
- POJ 2348 Euclid's Game(博弈)
- POJ 2348 Euclid's Game【博弈】
- POJ 2348 Euclid's Game (博弈)
- 【POJ 2348】Euclid's Game 【简单博弈】
- 【POJ 2348 Euclid's Game】 + 博弈
- 【POJ 2348 Euclid's Game】+ 博弈
- POJ 2348 Euclid's Game <博弈>
- POJ 2348 Euclid's Game(博弈)
- tomcat绿色部署
- C++ Primer 5e chapter 9.1
- Java中Thread的方法与对应的状态示意图
- Solr不区分大小写
- 黑盒测试和白盒测试区别
- POJ 2348 Euclid's Game (博弈找规律 )
- CentOS 打开mysql 3306端口
- centos如何给用户提权到root
- Unity3D 调用Android的提供的接口
- 浅谈C语言中的联合体
- R语言和Python语言访问MySQL数据库
- 模板 - 最长公共子序列
- shell正则
- Add Two Numbers