https://www.codechef.com/problems/CLPERM
这一题就是一个很有趣的博弈规律题,大概题意就是1-n个数字,其中缺失了一些数字,可以得出一个很奇怪的定理,只要当前缺的数等于前面所有数加起来减去前面缺的数,如果大与等于则是这个数字,其余情况就是这个缺的数字不能构成,然后就是判断奇偶性决定最后的结果
#include<bits/stdc++.h>
using namespace std;
const int maxn = 2e6;
typedef long long ll;
ll v[maxn];
const ll mod = 1e9;
int main()
{
int t;
cin>>t;
while(t--){
int n,k;
scanf("%d%d",&n,&k);
ll sum=0;
ll res=-1;
for(int i=1;i<=k;i++){
scanf("%d",&v[i]);
}
sort(v+1,v+1+k);
for(int i=1;i<=k;i++){
sum+=v[i];
ll t= 1ll *v[i] * (v[i]+1)/2-sum;//等差数列
if(v[i]>t){
res=t;
break;
}
}
if(res==-1)
res=1ll*n*(n+1)/2-sum;
if(res&1)cout<<"Mom"<<endl;
else cout<<"Chef"<<endl;
}
}