poj解题报告——2348
来源:互联网 发布:知乎 古驰 零售管培生 编辑:程序博客网 时间:2024/04/30 02:16
题意:给定两个数,两个人轮流操作,先把其中一个数变为0的人赢。这种操作是用把大数变为大数减小数的若干倍的差(不能小于0)。问谁能赢。
分析:谁先抢到关键态,谁就能赢。关键态就是大数是小数的二倍多。一个人一旦抢到了关键态,就可以直接操控下面一连串的非关键态的次序,非关键态相当于每个人进行的都是a%b,所以是交替进行a%b和b%a。也就是说这个究竟自己是a%b还是b%a在非关键态中,自己是无法决定的。只能由上一个关键态的操控者决定。这样获胜的方法就是,一个人一旦取得关键态,就算准次序,让自己获得下一个关键态。直至获胜。
#include<iostream>using namespace std;int n,m;int max(int a,int b){if(a>b)return a;elsereturn b;}void start(){int a=max(n,m);int b=m+n-a;int flag=0;while(b>0){flag=!flag;if(a/b>=2)break;a=a%b;swap(a,b);}if(flag)printf("Stan wins\n");elseprintf("Ollie wins\n");}int main(){while(scanf("%d%d",&n,&m)!=EOF){if(n+m==0)break;start();}return 0;}
0 0
- poj解题报告——2348
- POJ 1088 滑雪——解题报告
- POJ 1047——解题报告
- poj解题报告——poj1006
- poj解题报告——1032
- poj解题报告——1061
- poj解题报告——1450
- poj解题报告——1002
- poj解题报告——2109
- poj解题报告——1218
- poj解题报告——1250
- poj解题报告——1012
- poj解题报告——3299
- poj解题报告——2209
- poj解题报告——2406
- poj解题报告——2242
- poj解题报告——1401
- poj解题报告——1328
- 机器学习经典书籍
- CodeForces 567A Lineland Mail 贪心
- Hdu 5349 MZL's simple problem 2015ACM多校对抗赛第五场
- 南邮 OJ 1613 Counting square
- linux之sed用法
- poj解题报告——2348
- MyBatis中关于resultType和resultMap的区别
- vs2013 c#智能提示变成英文的问题
- 费式序列(斐波那契数列)
- ubuntu下Qt调试提示:“ptrace:不允许的操作”
- 15年全国电子设计大赛专家组意见
- C++中重载、覆盖、隐藏之间的关系
- 基本概念
- 三大WEB服务器对比分析(apache ,lighttpd,nginx)