版权声明:欢迎转载 https://blog.csdn.net/l18339702017/article/details/82219363
A multiplication game
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 Sample Input Sample Output Source |
遇事不决先打表:
[1,9] [10,18] [19,162] [163,324] [325,2916]
A B A B A
发现规律:每个区间的有界 r = 9^x * 2 ^y;
对每个n进行判断即可
#pragma GCC optimize(2)
#include <cstdio>
#include <cstring>
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
#define clr(a) memset(a,0,sizeof(a))
#define rep(i,x,y) for(int i=x;i<y;i++)
#define REP(i,x,y) for(int i=x;i<=y;i++)
#define pre(i,x,y) for(int i=x;i>=y;i--)
#define line cout<<"-----------------"<<endl;
typedef long long ll;
const int maxn = 1e5+10;
const int MAXN = 1e6+10;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9+7;
const int N = 1010;
int main(){
ll n;
while(scanf("%lld", &n) != EOF){
ll flag = 0;
ll ans = 1;
while(ans < n){
if(flag & 1) ans *= 2;
else ans *= 9;
flag ++;
}
if(flag & 1) puts("Stan wins.");
else puts("Ollie wins.");
}
return 0;
}