比赛 [不是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;
}