Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
33935 baka24 【S】T3 C++ 通过 100 873 MS 10240 KB 1364 2024-10-30 15:49:22

Tests(10/10):


#include<bits/stdc++.h> using namespace std; #define int long long #define pii pair<int,int> #define fr first #define sc second #define mk make_pair #define pb push_back int read(){int x=0,f=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar();return x*f;} const int MAXN=510,N=20,Mod=998244353; int Pow(int x,int y){int rt=1;while(y){if(y&1)rt=rt*x%Mod;x=x*x%Mod,y>>=1;}return rt;} int n,p,f[MAXN][MAXN],g[MAXN][MAXN],jc[MAXN],ny[MAXN],C[MAXN][MAXN]; void add(int &x,int y){ x+=y; if(x>Mod)x-=Mod; } void slv(){ n=read(),p=read(),p=p*Pow(read(),Mod-2)%Mod; for(int i=0;i<=n;i++)C[i][0]=1; for(int i=1;i<=n;i++)for(int j=1;j<=i;j++)C[i][j]=(C[i-1][j]+C[i-1][j-1]>Mod?C[i-1][j]+C[i-1][j-1]-Mod:C[i-1][j]+C[i-1][j-1]); for(int i=0;i<=n;i++)f[0][i]=g[0][i]=1; for(int i=1;i<=n;++i){ for(int x=0;x<=n;++x){ for(int j=0;j<i;++j){ add(f[i][x],(p*f[j][x+1]+(1-p+Mod)%Mod*(x?f[j][x-1]:0))%Mod*C[i-1][j]%Mod*g[i-j-1][x]%Mod); } for(int j=0;j<=i;j++){ add(g[i][x],f[i-j][x]*f[j][x]%Mod*C[i][j]%Mod); } } } int ans=f[n][0]; for(int i=1;i<=2*n;i+=2)ans=ans*Pow(i,Mod-2)%Mod; printf("%lld",ans); } signed main(){ slv(); return 0; }


测评信息: