题目链接
题意:乘法博弈,每个人可以从1开始乘,大于等于n的胜
题解:
sg函数打表找规律
发现和18有关。
sg函数打表代码:
#include<cstdio>
using namespace std;
const int N = 1e4+10;
typedef long long ll;
ll n ;
int SG(ll x){
if(x >= n) return 0;
for(ll i = 2;i <= 9 ;i ++){
if(!SG(x*i)) return 1;
}
return 0;
}
int main(){
while(~scanf("%lld" , &n )){
if(SG(1)) {
puts("Stan wins.");
}
else puts("Ollie wins.");
}
}
题解代码:
#include<cstdio>
using namespace std;
const int N = 1e4+10;
typedef long long ll;
double n ;
int main(){
while(~scanf("%lf" , &n)){
while(1){
if(n <= 9){
puts("Stan wins."); break;
}
else if(n <= 18){
puts("Ollie wins.") ; break;
}
n /= 18;
}
}
}