提交时间:2025-01-07 20:41:32

运行 ID: 35877

#include<bits/stdc++.h> using namespace std; const int N=3e5+51,mod=998244353; int f[N]; int n,d[N],V=0; int qp(int a,int b){ int x=1; while(b){ if(b&1) x=1ll*x*a%mod; a=1ll*a*a%mod;b>>=1; }return x; }int fac[N],inv[N]; int C(int u,int d){ if(u>d) return 0; return 1ll*fac[d]*inv[u]%mod*inv[d-u]%mod; } int main(){ cin>>n; for(int i=1;i<=n;i++) cin>>d[i],V=max(V,d[i]); int lm=V*3+10; fac[0]=1;for(int i=1;i<=lm;i++) fac[i]=1ll*fac[i-1]*i%mod; inv[lm]=qp(fac[lm],mod-2);for(int i=lm-1;i>=0;i--) inv[i]=1ll*inv[i+1]*(i+1)%mod; f[1]=1; for(int i=1;i<n;i++){ f[i+1]=1ll*f[i]*C(d[i]-1,d[i]+d[i+1]-1)%mod; //cout<<f[i]<<endl; }cout<<f[n]; return 0; }