【2,9】stan赢 不用解释
【10,18】ollie赢 stan无论第一次乘以哪个数,都ollie赢
【19,18*9】stan赢 根据n的大小,stan选择第一次乘的数,使得ollie选9赢不了,而就算ollie选2,那stan都可以选9赢。
【18*9+1,18*9*2】ollie赢 也是一样,无论stan第一次选哪个数,ollie第二次根据第一次的数选择,使得第三次,stan选9赢不了,而就算stan选2,那ollie都可以选9赢。
#include<cstdio>
#define maxl 100
long long n,da=(long long)4294967295;
int cnt=2;
long long num[maxl];
bool ans[maxl];
int main()
{
num[1]=1;num[2]=10;
ans[1]=1;ans[2]=0;
while(num[cnt]<da)
{
cnt++;
if(cnt&1)
num[cnt]=(num[cnt-1]-1)*2+1;
else
num[cnt]=(num[cnt-1]-1)*9+1;
ans[cnt]=!ans[cnt-1];
}
while(~scanf("%lld",&n))
{
for(int i=1;i<=cnt;i++)
if(n<num[i])
{
if(ans[i-1])
printf("Stan wins.\n");
else
printf("Ollie wins.\n");
break;
}
}
return 0;
}