博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【HDOJ】1525 Euclid's Game
阅读量:6516 次
发布时间:2019-06-24

本文共 1058 字,大约阅读时间需要 3 分钟。

自己想明白的第一道博弈。

首先a==b的时候肯定是先手赢;

然后当a>=2*b时,不妨假设a=nb+k, k<b,因此,不论后续怎么博弈,一定可以出现a=k, b=b的情况。因此,无论这个局面是胜或负,先手者一定可以得到利于自己的局面。

若(k,b)为负,则先手者从a减去nb,则先手胜;若(k,b)为胜,先手者从a减去(n-1)*b,则先手仍然胜。

当b<a<2*b时,只能对a减去b,然后进入下一轮仍旧按照上述策略博弈。

1 /* 1525 */ 2 #include 
3 #include
4 #include
5 6 void swap(int &a, int &b) { 7 int tmp = a; 8 a = b; 9 b = tmp;10 }11 12 int main() {13 int a, b;14 bool flag;15 16 #ifndef ONLINE_JUDGE17 freopen("data.in", "r", stdin);18 #endif19 20 while (scanf("%d%d",&a,&b)!=EOF && (a||b)) {21 if (a < b)22 swap(a, b);23 flag = true;24 while (1) {25 if (a==b || a>=2*b)26 break;27 a -= b;28 if (a < b)29 swap(a, b);30 flag = !flag;31 }32 if (flag)33 puts("Stan wins");34 else35 puts("Ollie wins");36 }37 38 return 0;39 }

 

转载于:https://www.cnblogs.com/bombe1013/p/4256079.html

你可能感兴趣的文章
Python 基础起步 (十) 什么叫函数?
查看>>
5G一周热闻:华为夺联通5G大单,首张5G电话卡发放
查看>>
“迁移策略+新容器运行时”应对有状态应用的冷热迁移挑战
查看>>
使用Swoole加速Laravel(正式环境中)
查看>>
mockjs让前端开发独立于后端
查看>>
延迟脚本的方式
查看>>
1.4linux单用户模式下修改root密码和救援模式修改root密码
查看>>
微服务架构优缺点
查看>>
解读userenv的日志
查看>>
跨进程通信之Messenger
查看>>
ext3与ext4区别
查看>>
UNIX/Linux 系统管理技术手册阅读(三)
查看>>
btrfs的使用(案例讲解)
查看>>
安装配置samba服务器和客户端
查看>>
filebeat 配置文件详解
查看>>
Swift与OC混编
查看>>
CentOS 5 (64位)下lnmp平台搭建
查看>>
redhat 6.5 配置WAS控制台中文
查看>>
mysql实现vsftp虚拟用户访问
查看>>
记录一次处理https监听不正确的过程
查看>>