A Multiplication Game

题目:有数p和n,两个人从p = 1开始,依次在p上乘上2~9中的一个数字,,谁先到达或超过n就获胜,

现在给你n,判断谁获胜。

分析:博弈。对应的每一个给定的n,获胜的人是确定的。

首先,找下规律:(这里可以把多次取的数字压缩成一个整体,不影响最后的区间)

n ∈ (1,9] Stan 获胜;(S取2~9)

n ∈ (9,18]Ollie 获胜;(S取2~9,O取2~9)

n ∈ (18,162]Stan 获胜;(S取4~81,O取2~9)

n ∈ (162,324]Ollie 获胜;(S取4~81,O取4~81)

观察我们可以发现,状态是以18为周期循环的,设f(n)为给定数字Stan的获胜情况;

(Stan 和 Ollie的获胜情况相反,设一个函数就够了)

则有f(n)= f(n / 18)= f(n / 18 / 18)… f(k); { k < 18 }

(这里不要使用整除,会出现舍掉误差)

说明:UVa打不开,用vjudge就可以╮(╯▽╰)╭。

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

天才是百分之一的灵感加上百分之九十九的努力

A Multiplication Game

相关文章:

  • 【算法】直接插入排序C语言实现
  • 嵌入式 FAAC1.28 在海思HI3518C/HI3518A平台linux中的编译优化
  • Android 动画animation 深入分析
  • 你感兴趣的文章:

    标签云:

    亚洲高清电影在线, 免费高清电影, 八戒影院夜间, 八戒电影最新大片, 出轨在线电影, 午夜电影院, 在线影院a1166, 在线电影院, 在线观看美剧下载, 日本爱情电影, 日韩高清电影在线, 电影天堂网, 直播盒子app, 聚合直播, 高清美剧, 高清美剧在线观看 EhViewer-E站, E站, E站绿色版, qqmulu.com, qq目录网, qq网站目录,