Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
33960 A21μΘ_wjy 【S】T3 C++ 运行出错 60 104 MS 368 KB 1459 2024-10-30 20:06:00

Tests(6/10):


#include<bits/stdc++.h> #define int long long using namespace std; const int maxn=507; const int mod=998244353; int n,p; int dp[107][107]; int Fac[maxn],iFac[maxn]; inline int qpow(int a,int b){ int ans=1; while(b){ if(b&1)ans=ans*a%mod; a=a*a%mod; b>>=1; } return ans; } inline void init(){ Fac[0]=1; for(int i=1;i<maxn;i++)Fac[i]=Fac[i-1]*i%mod; iFac[maxn-1]=qpow(Fac[maxn-1],mod-2); for(int i=maxn-2;i>=0;i--)iFac[i]=iFac[i+1]*(i+1)%mod; } inline int TriNom(int a,int b,int c){ return Fac[a+b+c]*iFac[a]%mod*iFac[b]%mod*iFac[c]%mod; } inline int DP(int OP,int x){ if(x<0)return 0; if(OP==0){return 1;} if(dp[OP][x]!=-1)return dp[OP][x]; int ret=0; for(int i=0;i<=OP-1;i++){ for(int j=0;i+j<=OP-1;j++){ ret=ret+DP(i,x)*DP(j,x+1)%mod*DP(OP-1-i-j,x)%mod*p%mod*TriNom(i,j,OP-1-i-j)%mod; ret%=mod; ret=ret+DP(i,x)*DP(j,x-1)%mod*DP(OP-1-i-j,x)%mod*((mod+1-p)%mod)%mod*TriNom(i,j,OP-1-i-j)%mod; ret%=mod; } } return dp[OP][x]=ret; } signed main(){ #ifndef ONLINE_JUDGE freopen("1.in","r",stdin); freopen("1.out","w",stdout); #endif init(); memset(dp,-1,sizeof(dp)); cin>>n; int x,y;cin>>x>>y; p=x*qpow(y,mod-2)%mod; int DE=1; for(int i=0;i<n;i++)DE=DE*(i*2+1)%mod; cout<<DP(n,0)*qpow(DE,mod-2)%mod<<endl; }


测评信息: