小a的强迫症
小a的强迫症
其实很简单
就是每个颜色i在前面的所有珠子中选 num[i]-1个位置,\(C(\sum num[i] ~-1,num[i]-1)\)
#include <iostream>
#include <cstdio>
using namespace std;
#define int long long
const int mod=998244353;
const int N=500005;
inline int read(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
while(isdigit(ch)){x=x*10+ch-'0';ch=getchar();}
return f*x;
}
int n,x,sum,ans=1;
int fac[N],inv[N];
int qpow(int a,int b) {
int res=1;
while(b) {
if(b&1) res=res*a%mod;
b>>=1;
a=a*a%mod;
}
return res%mod;
}
int C(int n,int m) {
return fac[n]*inv[m]%mod*inv[n-m]%mod;
}
signed main() {
n=read();
fac[1]=1;
for(int i=2;i<=N;i++) fac[i]=fac[i-1]*i%mod;
inv[N]=qpow(fac[N],mod-2);
for(int i=N;i;i--) inv[i-1]=inv[i]*i%mod;
sum=read();
for(int i=2;i<=n;i++) {
x=read();sum+=x-1;
ans=ans*C(sum,x-1)%mod;
sum++;
}
printf("%lld\n",ans);
return 0;
}
/*
3
2 2 1
*/