在初始状态下, nn为偶数或无法操作时必败。 nn为奇数且可以操作时必胜。 必胜法:任意选一个分割成最小,然后镜像操作。

判断是否可操作即寻找mm的大于1的最小因数iim/ikm/i\ge k可操作。

细节:1)注意不要直接遍历,会超时。2)注意m=1m=1等特殊状态。

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;
}