| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 38964 | swzzzz | 【S】T2 | C++ | 通过 | 100 | 54 MS | 2796 KB | 988 | 2025-11-19 21:29:13 |
#include<bits/stdc++.h> using namespace std; #define N 200005 #define mod 998244353 #define ll long long int n; bool a[N]; int b[N]; ll frac[N]; ll qp(ll x,ll y){ ll res=1; while(y){ if(y&1) res=(res*x)%mod; x=(x*x)%mod; y>>=1; } return res; } ll inv(ll x){ return qp(x,mod-2); } ll c(ll x,ll y){ if(y<0) return 0; if(y>x) return 0; return frac[x]*inv(frac[y])%mod*inv(frac[x-y])%mod; } int main(){ ios::sync_with_stdio(0); cin>>n; frac[0]=1; for(int i=1;i<=n;i++) frac[i]=(frac[i-1]*i)%mod; char ch; for(int i=1;i<=n;i++){ cin>>ch; a[i]=(ch==')'); b[i]=b[i-1]+(!a[i]); } ll ans=1; for(int i=1;i<=n;i++){ if(a[i]){ (ans+=c(n-i,n/2-b[i-1]-1)-c(n-i,n/2-b[i-1]-2)+mod)%=mod; // cout<<i<<' '<<c(n-i,n/2-b[i-1]-1)<<' '<<c(n-i,n/2-b[i-1]-2)<<endl; } } cout<<ans<<endl; return 0; }