HDU1525->博弈论
来源:互联网 发布:最小树形图 朱刘算法 编辑:程序博客网 时间:2024/06/07 15:20
HDU1525->博弈论
题意:
两个人玩游戏,给出两个数字,每个人只能用大的数字减去小的数字的任意正整数倍,先把一个数减到0的人获胜,问谁最后获胜。
题解:
记a > b,
如果输入中a和b中有一个是0,则先手直接获胜。
否则:
如果a%b == 0 , 则此时正在操作的人可以直接获胜;
如果a/b>=2,则此时正在玩游戏的人可以通过自己的操作决定必胜和必败。
这个人肯定知道a%b , b是必胜态还是必败态。如果是必败态,先手将a,b变成a%b , b , 那么先手肯定赢。如果是必胜态,先手将a,b变成a%b+b,b.那么对手只有将这两个数变成a%b,b,先手获胜。
如果b < a < 2*b , 则只能一步一步向下进行操作,直到出现上面的两种情况终止游戏。
代码:
#include <stdio.h>#include <iostream>#include <algorithm>using namespace std ;int main(){ int a , b , flag; while(~scanf("%d%d" , &a , &b),a+b) { if(b > a) swap(a , b) ; flag = 0 ; while(b) { if(a / b > 1 || a % b == 0) break ; a = a - b ; swap(a , b) ; flag ^= 1 ; } if(!flag) printf("Stan wins\n") ; else printf("Ollie wins\n") ; } return 0 ;}
0 0
- HDU1525->博弈论
- HDU1525
- hdu1525
- 基础博弈论之——简单的博弈问题【hdu1525】【Euclid‘s Game】
- HDU1525 Euclid's Game
- hdu1525 Euclid's Game
- 博弈论
- 博弈论
- 博弈论
- 博弈论
- 博弈论
- 博弈论
- 博弈论
- 【博弈论】
- 博弈论
- 博弈论
- 博弈论
- 博弈论
- js 浏览器监听事件的兼容性问题
- C++中的虚函数表(转)
- Docker 从入门到放弃(三)之Docker环境
- RT5350 I2S audio问题
- android 开发遇到的bug--引入第三方库
- HDU1525->博弈论
- 给搞算法领域新人建议
- js 判断浏览器
- JTree
- dom parse xml
- C++标准模板库(STL)使用 02
- 机器学习(2)数学知识积累
- ubuntu 14.04 64位 安装Opencv3.1.0 (包含opencv_contrib模块)
- windows下在内存中运行程序