554C - Kyoya and Colored Balls

时间:2023-03-09 13:14:15
554C - Kyoya and Colored Balls

554C - Kyoya and Colored Balls

思路:组合数,用乘法逆元求。

代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define mem(a,b) memset(a,b,sizeof(a)) const int MOD=1e9+;
const int N=1e6+;
int a[];
ll fact[N]={}; ll qpow(ll n,ll k)
{
ll ans=;
while(k)
{
if(k&)ans=(ans*n)%MOD;
k>>=;
n=(n*n)%MOD;
}
return ans;
} ll C(ll n,ll k)
{
ll ans=fact[n];
ans=((ans*qpow(fact[n-k],MOD-))%MOD*qpow(fact[k],MOD-))%MOD;
return ans;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie();
int n,sum=;
cin>>n;
for(int i=;i<=n;i++)cin>>a[i],sum+=a[i]; for(ll i=;i<N;i++)
fact[i]=(fact[i-]*i)%MOD; ll ans=;
for(int i=n;i>=;i--)
{
ans=(ans*C(sum-,a[i]-))%MOD;
sum-=a[i];
} cout<<ans<<endl;
return ;
}