提交时间:2024-11-28 15:42:17
运行 ID: 35178
#include<bits/stdc++.h> using namespace std; const int N=2200,mod=998244353; int f[N][N],g[N][N],c0[N],c1[N]; int main(){ int n;string s;cin>>n>>s; s=' '+s; for(int i=1;i<=n;i++) c0[i]=c0[i-1]+(s[i]=='0'); for(int i=n;i>=1;i--) c1[i]=c1[i+1]+(s[i]=='1'); memset(f,0,sizeof(f)); f[0][0]=1;g[0][0]=1; for(int i=1;i<=n;i++) g[0][i]+=g[0][i-1]; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ if(s[i]=='0') f[i][j]=g[i-1][j-1]+1ll*f[i-1][j-1]*(j-1)%mod; if(s[i]=='1') f[i][j]=1ll*f[i-1][j]*(i-j)%mod; //cout<<i<<' '<<j<<' '<<f[i][j]%mod<<endl; f[i][j]%=mod; g[i][j]=(g[i][j-1]+f[i][j])%mod; } }cout<<g[n][n]; return 0; }