比赛 |
[不是Rapiz出的]农场主钦定NOIP模拟赛1 |
评测结果 |
AWWEEEEEEE |
题目名称 |
Play with Power |
最终得分 |
10 |
用户昵称 |
Riolu |
运行时间 |
1.014 s |
代码语言 |
C++ |
内存使用 |
15.57 MiB |
提交时间 |
2016-11-08 21:05:05 |
显示代码纯文本
/*=========================================*
* Auther: Riolu
* Time: 2016.11.8
* ©Copyright 2016 Riolu. All Rights Reserved.
*=========================================*/
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<map>
#include<set>
#include<cmath>
#include<string>
#include<ctime>
#include<cstring>
using namespace std;
typedef long long ll;
typedef double db;
const int N =2e3;
int n,t,a,b;
int win[N][N];
int dfs(int a,int b){ //函数返回的是该人 在ab的情况下 能不能赢 =1 赢 =0 输
if(a<N && b<N && win[a][b]==-1)return 0;
if(a<N && b<N && win[a][b]==1 )return 1;
if(pow(a,b+1)>n && pow(a+1,b)>n){//无路可走
if(a<N && b<N)win[a][b]=-1;
return 0;//不能赢
}
int ga,gb,tmp;//ga=1 a++ 能赢
if(pow(a+1,b)>n) ga=0;else{ tmp=dfs(a+1,b); if(tmp==1)ga=0; if(tmp==0)ga=1;}
if(pow(a,b+1)>n) gb=0;else{ tmp=dfs(a,b+1); if(tmp==1)gb=0; if(tmp==0)gb=1;}
if(ga || gb){if(a<N && b<N)win[a][b]=1; return 1;}
if(a<N && b<N)win[a][b]=-1;return 0;
}
int main(){
freopen("play.in","r",stdin);
freopen("play.out","w",stdout);
int num=0;
cin>>n>>t;
//cout<<log(100000000)/log(2)<<endl;
while(t){ t--;
cin>>a>>b;
if(a==1&& b>log(n)/log(2)){
cout<<"Missing"<<endl;
continue;
}
int tmp;
if(a!=1) {
tmp=dfs(a,b);
if(tmp==1)cout<<"Masha"<<endl;
else if(tmp==0)cout<<"Stas"<<endl;
}
else {
tmp=dfs(2,b);
if(tmp==1)cout<<"Masha"<<endl;
else if(tmp==0)cout<<"Missing"<<endl;
}
}
return 0;
}
/*
*/