博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hdoj 1517.A Multiplication Game 题解
阅读量:5260 次
发布时间:2019-06-14

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

Problem Description

Stan and Ollie play the game of multiplication by multiplying an integer p by one of the numbers 2 to 9. Stan always starts with p = 1, does his multiplication, then Ollie multiplies the number, then Stan and so on. Before a game starts, they draw an integer 1 < n < 4294967295 and the winner is who first reaches p >= n.

Input

Each line of input contains one integer number n.

Output

For each line of input output one line either

Stan wins.

or

Ollie wins.

assuming that both of them play perfectly.

Sample Input

1621734012226

Sample Output

Stan wins.Ollie wins.Stan wins.

Source


思路

跟巴什博奕不同的是,这里是乘法,但是思路差不多

可取区间在\([2,9]\),显然如果这是Stan的必胜段,而\([10,18]\)是Stan的必败段,这样一次博弈就完成了,后面的状态要得出来也可以,\([19,162]\)为Stan的必胜段,更后面的情况可以归结到\([1,18]\)的讨论(巴什博奕也是归结到前(1+m))的讨论

上线分别是乘以2,9在变化是因为两个人的扩张策略不一样,Stan先手肯定是尽量乘以大的赢得概率大,从Ollie的角度想,就要乘以小的来尽可能阻止Stan赢

代码

#include
using namespace std;int main(){ double n; while(cin >> n) { while(n>18) n/=18; if(n<=9) cout << "Stan wins.\n"; else cout << "Ollie wins.\n"; } return 0; }

转载于:https://www.cnblogs.com/MartinLwx/p/10126207.html

你可能感兴趣的文章
中文系统 上传file的input显示英文
查看>>
android permission
查看>>
【译】在Asp.Net中操作PDF - iTextSharp - 使用字体
查看>>
.net 文本框只允许输入XX,(正则表达式)
查看>>
android smack MultiUserChat.getHostedRooms( NullPointerException)
查看>>
03 线程池
查看>>
设计模式课程 设计模式精讲 2-2 UML类图讲解
查看>>
Silverlight 的菜单控件。(不是 Toolkit的)
查看>>
jquery的contains方法
查看>>
linux后台运行和关闭SSH运行,查看后台任务
查看>>
桥接模式-Bridge(Java实现)
查看>>
303. Range Sum Query - Immutable
查看>>
C# Dynamic通用反序列化Json类型并遍历属性比较
查看>>
前台freemark获取后台的值
查看>>
Spring-hibernate整合
查看>>
exit和return的区别
查看>>
Django 相关
查看>>
Python(软件目录结构规范)
查看>>
c++||template
查看>>
条件断点 符号断点
查看>>