[ABC298E] Unfair Sugoroku 题解
概率
考虑
时间复杂度为
code:
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int mod=998244353;
int n,a,b,p,q,dp[110][110],ans;
int quickpow(int x,int p)
{
int base=x;
int ans=1;
while(p)
{
if(p&1)ans=ans*base%mod;
p>>=1;
base=base*base%mod;
}
return ans%mod;
}
signed main()
{
cin>>n>>a>>b>>p>>q;
dp[a][b]=1;
for(int i=a;i<n;i++)
for(int j=b;j<n;j++)
for(int l1=1;l1<=p;l1++)
for(int l2=1;l2<=q;l2++)
dp[min(i+l1,n)][min(j+l2,n)]=(dp[min(i+l1,n)][min(j+l2,n)]+dp[i][j]*quickpow(p,mod-2)%mod*quickpow(q,mod-2)%mod)%mod;
for(int i=1;i<=n;i++)ans=(ans+dp[n][i])%mod;
cout<<ans;
return 0;
}