WA50分求调




image

#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 个赞

image
:smiling_face_with_tear:

1 个赞

:smiley: :smiley:

1 个赞