牛牛要最后的数为奇数,牛妹要最后的数为偶数。
最后两个数可能有三种情况,奇奇、奇偶、偶偶
下面分两种情况讨论:
1、最后一次操作是牛妹出手
牛妹需要偶数,奇奇可以用加法变成偶数,奇偶可以用乘法,偶偶任意操作都是偶数
所以如果牛妹最后出手,牛妹必胜
2、最后一次操作是牛牛出手
牛牛需要奇数,奇奇可以用乘法还是奇数,奇偶可以用加法变成奇数,偶偶没有办法变成奇数
所以,当牛牛最后出手时,有奇数获胜
再分析一下情况,牛牛是没有办法增加奇数的个数的,因为没有操作把两个偶数变成奇数
牛妹就是要减少奇数的个数,让最后两个数都是偶数,牛妹一次最多减少两个奇数(奇数+奇数 = 偶数)
因为牛妹一次操作可以减少两个奇数,所以只需要判断奇数的个数和牛妹操作次数*2的大小即可
记得当n==1的时候特判一下
#include <bits/stdc++.h> using namespace std; typedef long long ll; int main(){ int n; scanf("%d",&n); int res = 0,tmp; for(int i = 0 ; i < n ; ++i){ scanf("%d",&tmp); if(tmp & 1) res++; } if(n == 1){//n == 1 需要特判 if(res) puts("NiuNiu"); else puts("NiuMei"); return 0; } if(n & 1){//牛妹最后出手必胜 puts("NiuMei"); } else{ int num = n / 2 - 1;//牛妹操作的次数 if(num * 2 >= res) puts("NiuMei");//牛妹能把所有奇数都变成偶数 else puts("NiuNiu"); } return 0; }