提交时间:2024-10-30 15:23:49
运行 ID: 33921
#include<bits/stdc++.h> using namespace std; #define int long long int n,P,nP; const int M=998244353; inline int qp(int a,int x){ int res=1; while(x){ if(x&1)res=res*a%M; a=a*a%M; x>>=1; } return res; } inline int inv(int x){return qp(x,M-2);} int f[510][510]; int g[510][510],h[510][510]; int C[510][510]; signed main(){ ios::sync_with_stdio(0); cin.tie(0),cout.tie(0); // freopen("bracket.in","r",stdin); // freopen("bracket.out","w",stdout); int x,y; cin>>n>>x>>y; for(int i=0;i<=n;i++){ C[i][0]=1; for(int j=1;j<=i;j++) C[i][j]=(C[i-1][j-1]+C[i-1][j])%M; } P=x*inv(y)%M; nP=(1-P+M)%M; int t=1; for(int i=1;i<=2*n-1;i+=2) t=t*i%M; for(int i=0;i<=n;i++) f[0][i]=1,g[0][i]=1; for(int i=1;i<=n;i++){ for(int j=0;j<=n;j++){ for(int p=0;p<=i-1;p++){ f[i][j]=(f[i][j]+f[p][j+1]*g[i-1-p][j]%M*C[i-1][p]%M*P)%M; if(j)f[i][j]=(f[i][j]+f[p][j-1]*g[i-1-p][j]%M*C[i-1][p]%M*nP)%M; } for(int p=0;p<=i;p++) g[i][j]=(g[i][j]+f[p][j]*f[i-p][j]%M*C[i][p])%M; } } cout<<f[n][0]*inv(t)%M<<endl; cout.flush(); return 0; }