✎
编程开发网
首页
C语言
C++
面试
Linux
函数
Windows
数据库
下载
搜索
当前位置:
首页
->
基础
->
c++编程基础
HDU 1525 Euclid's Game (博弈)
2015-01-24 06:28:40
·
作者:
·
浏览:
3
标签:
HDU
1525
Euclid'
Game
博弈
两个数a和b,总会出现的一个局面是b,a%b,这是必然的,如果a>=b&&a<2*b,那么只有一种情况,直接到b,a%b。否则有多种情况。
对于对于a/b==1这种局面,只可能到b,a%b,没有选择。而a/b>=2的话,先手可以选择由谁面对b,a%b这样的局势
显然选手足够聪明b,a%b谁必胜必败已经清楚,先手在a/b>=2的局面必胜
[cpp]
#include
?
#include
?
#include
?
#include
?
#include
?
#include
?
#include
?
#include
?
#define LL long long?
#define N 1000000?
#define inf 1<<20?
using namespace std;?
int main(){?
??? int a,b;?
??? while(scanf("%d%d",&a,&b)!=EOF&&a+b){?
??????? if(a
??????????? swap(a,b);?
??????? bool stan=true;?
??????? while(1){????????????
??????????? if(b==0||a%b==0||a/b>=2) break;?
??????????? int t=a;?
??????????? a=b;?
??????????? b=t-a;?
??????????? stan=!stan;?
??????? }?
??????? if(stan)?
??????????? printf("Stan wins\n");?
??????? else?www.2cto.com
??????????? printf("Ollie wins\n");?
??? }?
??? return 0;?
}?
?????
作者:ACM_cxlove