http://codeforces.com/contest/78/problem/C //博弈 //题意是说一个人可以把一条木棒一次折成相等的几段,一开始没看到no less than以为不大于k(靠,英语太烂了) //如果木棒数目为偶数时,后取的必胜,只要重复先者操作就ok;奇数时,只要判断一条时的情况就可以得出结果, //因为后面就是偶数的情况了 #include<stdio.h> #include<math.h> int main() { int n,m,k; while(scanf("%d%d%d",&n,&m,&k)!=EOF) { int d=sqrt(double (m)); int flag=0; if(n%2==0) { printf("Marsel/n"); continue; } for(int i=1;i<=d;i++)//注意不要TLE,用O(n)找因子 { if( m%i==0 && ( ( i>=k ) || ( m/i>=k && i!=1) ) )//判断T能否把一根木棒平均地折断 { flag=1; break; } } if(m==1)//长度为1 M必胜 flag=0; if(flag) printf("Timur/n"); else printf("Marsel/n"); } return 0; }