hdu 1517 (类巴神博弈)

A Multiplication Game

Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 3977    Accepted Submission(s): 2264

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

162
17
34012226

Sample Output

Stan wins.
Ollie wins.
Stan wins.

Source

University of Waterloo Local Contest 2001.09.22

分析与巴什博弈很类似,将巴神博弈中的加法转化为此处的乘法,进行类比。

显然2~9之间先手赢(实际上此处为一的时候也为先手赢,最少值乘以二就超过了一)

10~18的时候,不管先手怎么安排第一步,后手赢!

要想先手继续赢,则需要在2~9 的基础上乘以18(主要是后面的范围,前面的范围与前

一个必败(胜)态,紧紧相邻即可),此时,不管后手怎么办,都能够通过

接下来的弥补,使有利局势,保证在先手的手里。即要想先手赢,需要在最初的基础上

多次乘以18。同理要想后手赢,需要在10~18的基础上多次乘以18.即判断输入的n除掉

多个18后剩下来的m与9作比较即可!m<=9,先手赢。10<=m<=18,后手赢!

代码如下:

#include<stdio.h>
int main()
{
    double n;//此处需要用double型 数据较大,没想到竟然__int64 位竟然都不可以-_-!
    while(~scanf("%lf",&n))
    {
        while(n>18)//循环到最后观察最终剩余的数的范围,在2~9之间为先手的必胜态,10~18为先手的必败态
        n/=18;
        printf(n<=9?"Stan wins.\n":"Ollie wins.\n");
    }
    return 0;
}
时间: 2024-10-12 14:09:50

hdu 1517 (类巴神博弈)的相关文章

HDU 1517 (类巴什博奕) A Multiplication Game

如果n在[2, 9]区间,那么Stan胜. 如果n在[10, 18]区间,那么Ollie胜,因为不管第一次Stan乘上多少,第二次Ollie乘上一个9,必然会得到一个不小于18的数. 如果n在[19, 162]这个区间呢? 比如说n=19,那么Stan乘上个2,不管Ollie怎么乘,Ollie得到的数必然在[4, 18]这个区间里面,而这里的任意一个数乘上9的话,必然会得到一个不小于19的数,Stan胜. 再比如n=162,Stan最开始乘上一个9,就将Ollie乘完以后的数限制在[18, 81

HDU 1517 A Multiplication Game (博弈-求sg)

A Multiplication Game 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

HDU 1517 A Multiplication Game (博弈&amp;&amp;找规律)

A Multiplication Game Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 3691    Accepted Submission(s): 2097 Problem Description Stan and Ollie play the game of multiplication by multiplying an in

HDU 3544 (不平等博弈) Alice&#39;s Game

切巧克力的游戏,想得还是不是太明白. 后者会尽量选前着切后其中小的一块来切,那么先手须尽量取中间来切. So?题解都是这么一句话,不知道是真懂了还是从别人那抄过来的. 后来找到一个官方题解,分析得比较认真,但我这智商还是没懂太多,QAQ 本题我抄袭自<Winning Ways for your Mathematical Plays> ,一本关于游戏论的科普类图书.这题是一个组合游戏,但是并不是一个对等的组合游戏,所以试图使用 SG 函数相关知识解答是会面临巨大的挑战的. 书中本题的做法描述得十

HDU 1517: kiki&#39;s game

/** * @link http://acm.hdu.edu.cn/showproblem.php?pid=1517 * @author Sycamore * @date Aug, 21 */// Suppose that their exists a direction(vertically or horizontally) in which// the steps remaining to arrive at the destination (n-1 or m-1) is even, as

hdu 2188 巴什博弈

巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规 定每次至少取一个,最多取m个.最后取光者得胜. 显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个, 后取者都能够一次拿走剩余的物品,后者取胜.因此我们发现了如何取胜的法则:如果 n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走 k(≤m)个,那么先取者再拿走m+1-k个,结果剩下(m+1)(r-1)个,以后保持这样的 取法,那么先取者肯定获胜.总

hdu 5165 Funny Game (博弈)

hdu 5165 Funny Game (博弈) 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5165 题意: Bob有一个数组{a1,a2,...,an},数组中的每个元素都是介于1到n之间的整数.Bob还有m个函数,他们的定义域和值域都是集合{1,2,...,n}.Bob和Alice轮流开始玩游戏,Alice先开始.对于每一轮,玩家可以选择一个函数f使得数组中每个元素 ai(1 <= i <= n)变成f(ai).例如,一开始数组是{1,

HDU 1517 A Multiplication Game(博弈论)

题目地址:HDU 1517 NP状态转换. 可以把题目的向上乘变成向下除.这样1是终结状态,设1的时候为必败点. 根据所有能一步到达必败点的点是必胜点,所以[x,x*9]必胜点:根据只能到达必胜点的点是必败点,所以[x*9+1,x*9*2]是必败点. 然后求解. 代码如下: #include <iostream> #include <cstdio> #include <string> #include <cstring> #include <stdli

HDU 2147-kiki&#39;s game(博弈/找规律)

kiki's game Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 40000/10000 K (Java/Others) Total Submission(s): 9174    Accepted Submission(s): 5485 Problem Description Recently kiki has nothing to do. While she is bored, an idea appears in his