#include<bits/stdc++.h>
using namespace std;
int main(){
long long n,ans=1,p=0,b,q=0,a[100001];
cin>>n;
for(int i=0;i<n;i++){
cin>>b;
if(b==1)p++;
else if(b%2)ans=ans*b%1000000007;
else a[q++]=b;
}if(q==0){
cout<<ans;
return 0;
}sort(a,a+q);
if(p<q)for(int i=0;i<p;i++)a[i]++;
else{
for(int i=0;i<q;i++)a[i]+=p/q;
for(int i=0;i<p%q;i++)a[i]++;
}for(int i=0;i<q;i++)ans=ans*a[i]%1000000007;
cout<<ans;
return 0;
}
一眼q<p
1 个赞
if(q<p)for(int i=0;i<q;i++)a[i]++;
2 个赞
这个没问题,就是判断1的数量没有超过偶数数量时的操作
q和p写反了
2 个赞
1 个赞
1 个赞