题解:B4337 [中山市赛 2023] 简单数学题
首先,从第一个盒子里抽出白球的概率可以转化为从第一个盒子里白球的期望个数在除以第一个盒子的总球数。
我们知道在每一轮操作之后两个盒子的球数是不会变化的,于是设一些变量,令
我们设
化简得:
为了方便,我们令
由于
这里我们可以将
AC代码:
#include<bits/stdc++.h>
#define db double
#define rg register
#define pb push_back
#define pob pop_back
#define pii pair<int,int>
#define vi vector<int>
#define fr first
#define sc second
#define endl '\n'
#define int long long
using namespace std;
const int inf=0x3f3f3f3f;
const int mod=998244353;
int read() {
int f=1,x=0;
char c=getchar();
while(!isdigit(c)) {
if(c=='-') f=-1;
c=getchar();
}while(isdigit(c)) {
x=(x<<1)+(x<<3)+(c-'0');
c=getchar();
}return x*f;
}
int n,a1,a2,b1,b2;
int A,B,T,now,p,q;
int qpow(int x,int a) {
int res=1;
while(a) {
if(a&1) res*=x,res%=mod;
x*=x,x%=mod,a>>=1;
} return res;
}
signed main() {
n=read(),a1=read()%mod,a2=read()%mod,b1=read()%mod,b2=read()%mod;
A=(a1+a2)%mod,B=(b1+b2)%mod,T=(a1+b1)%mod;
p=(A-1)*B%mod*qpow(A,mod-2)%mod*qpow(B+1,mod-2)%mod,q=T*qpow(B+1,mod-2)%mod;
now=a1;
now=qpow(p,n)*a1%mod;
now+=(qpow(p,n)-1+mod)*q%mod*qpow(p-1,mod-2)%mod;
cout<<now*qpow(A,mod-2)%mod<<"\n";
return 0;
}