Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
35877 | LYLAKIOIAKIOI | 2021北京队选拔模拟赛0-A | C++ | 通过 | 100 | 27 MS | 3396 KB | 762 | 2025-01-07 20:41:32 |
#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; }