比赛 |
[不是Rapiz出的]农场主钦定NOIP模拟赛1 |
评测结果 |
AWWWWWWWWE |
题目名称 |
Play with Power |
最终得分 |
10 |
用户昵称 |
_Itachi |
运行时间 |
0.100 s |
代码语言 |
C++ |
内存使用 |
0.90 MiB |
提交时间 |
2016-11-08 19:13:53 |
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int maxn=10005;
bool vis[maxn][32],win[maxn][32];
int n,size;
int Rabit_get(int x,int k){
int res=1;
while(k){
if(k&1){
if(res>n/x)return -1;
res=res*x;
}
x=x*x;k>>=1;
}
return res;
}
bool Rabit_run(int rt,int v){
if(rt>size){
if((n-rt)&1)return true;
else return false;
}
if(vis[rt][v])return win[rt][v];
vis[rt][v]=true;
int res=Rabit_get(rt,v);
if(res>n||res<0)return win[rt][v]=true;
if(res==n)return win[rt][v]=false;
return win[rt][v]=(!Rabit_run(rt+1,v))|(!Rabit_run(rt,v+1));
}
void Rabit_main(){
scanf("%d",&n);int tt,a,b;scanf("%d",&tt);
size=(int)sqrt(n+0.0);//printf("%d\n",size);
while(tt--){
scanf("%d%d",&a,&b);
if(a==1)puts("Missing");
else{
if(Rabit_run(a,b))puts("Masha");
else puts("Stas");
}
}
}
int main(){
#define _Rabit _RABIT
#ifdef _Rabit
freopen("play.in","r",stdin);
freopen("play.out","w",stdout);
#endif
Rabit_main();
#ifndef _Rabit
getchar(),getchar();
#endif
fclose(stdin);fclose(stdout);
return 0;
}