在初始状态下, 为偶数或无法操作时必败。 为奇数且可以操作时必胜。 必胜法:任意选一个分割成最小,然后镜像操作。
判断是否可操作即寻找的大于1的最小因数,可操作。
细节:1)注意不要直接遍历,会超时。2)注意等特殊状态。
AC代码如下:
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int n,m,k;
cin>>n>>m>>k;
int i;
for(i=2;i<=sqrt(m);i++){
if(m%i==0){
break;
}
}
if(i>sqrt(m)){
i=m;
}
if(n%2==0||m/i<k||i==1){
cout<<"Tony"<<endl;
}else{
cout<<"Macle"<<endl;
}
return 0;
}