A Multiplication Game HDOJ (巴什)

112 阅读1分钟

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;
}


\