A Multiplication Game HDOJ (巴什)

A Multiplication Game

Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 4369    Accepted Submission(s): 2480


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.



这种相乘的类似于相加的,但都是巴什,都是由简单的问题推想复杂的

之前的选手可以拿1~m个石子,当先手拿得石子m满足n%(m+1)==0时后手必赢。

相同的此题的分析方法也类似:

当n->2~9时先手赢

n->10~时后手赢。以此类推


#include <iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
  double  m,n;
    ios::sync_with_stdio(false);
    while(cin>>n)
    {
        if(n<=9)
        {
            puts("Stan wins.");
        }
        else
        {
            while( n>18)//跃过多次循环问题简化
            {
                n=n/18;
            }
            if(n<=9)
            puts("Stan wins.");
            else
            puts("Ollie wins.");
        }
    }
    return 0;
}


你可能感兴趣的:(博弈论)