有两只beaver,n个木块,每个都是m长。每一次,一个beaver可以选一块木头咬成多于1个的等长木块,而且每块木块长度是整数且不大于k。如果这个beaver不能玩了,那么另一只beaver赢。
Timur是先手,Marsel是后手。输出赢家。
\(n,m,k (1\leq n,m,k\leq 10^9 )\)
#include<bits/stdc++.h>
using namespace std;
int n,m,k;
int main(){
scanf("%d%d%d",&n,&m,&k);
bool flag=false;
if(n&1){
for(int i=1;i*i<=m;i++){
if(!(m%i)){
if(((m/i)>=k&&i>1)||(i>=k&&(m/i)>1))
{ flag=1;break;}
}
}
}
printf(flag?"Timur\n":"Marsel\n");
return 0;
}
Beaver Game CodeForces - 78C 【博弈论】
原文:https://www.cnblogs.com/xuwanwei/p/12804036.html