题目
分析
原题老长一大篇了,tag:英语阅读,然后翻译后就这么一点。
我们可以设第
i
i
i块矿挖出后
A
A
A的股权为
S
i
S_i
Si
于是可以列式:
S
i
=
S
i
−
1
+
S
i
−
1
1
+
w
(
i
−
1
)
w
=
S
i
−
1
⋅
1
+
w
i
1
+
(
w
i
−
1
)
=
1
+
w
i
1
+
(
w
i
−
1
)
⋅
1
+
(
w
i
−
1
)
1
+
(
w
i
−
2
)
.
.
.
⋅
1
+
w
1
⋅
S
0
=
(
1
+
w
i
)
a
S_i=S_{i-1}+\frac{S_{i-1}}{1+w(i-1)}w\\=S_{i-1}·\frac{1+wi}{1+(wi-1)}\\=\frac{1+wi}{1+(wi-1)}·\frac{1+(wi-1)}{1+(wi-2)}...·\frac{1+w}{1}·S_0\\=(1+wi)a
Si=Si−1+1+w(i−1)Si−1w=Si−1⋅1+(wi−1)1+wi=1+(wi−1)1+wi⋅1+(wi−2)1+(wi−1)...⋅11+w⋅S0=(1+wi)a
于是第
i
i
i轮期望为
S
i
−
a
w
=
a
i
\frac{S_i-a}{w}=ai
wSi−a=ai
所以
a
n
s
=
n
a
=
n
x
y
ans=na=n\frac{x}{y}
ans=na=nyx
注意其中的
1
y
\frac{1}{y}
y1要用逆元。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,x,y,w;
const ll mod=998244353;
ll ksm(ll x,ll y)
{
ll xx=1;
while(y)
{
if (y&1) xx=xx*x%mod;
x=x*x%mod;
y>>=1;
}
return xx;
}
int main()
{
scanf("%lld%lld%lld%lld",&n,&w,&x,&y);
printf("%lld\n",n*x%mod*ksm(y,mod-2)%mod);
}