I-Incentive Model
题目
链接:https://ac.nowcoder.com/acm/contest/11260/I
来源:牛客网
思路
设第i块矿挖出来后,A的股权为
S
i
S_i
Si.
那么
S
i
=
S
i
−
1
+
S
i
−
1
1
+
w
⋅
(
i
−
1
)
⋅
w
S_i=S_{i-1}+ \frac{S_{i-1}}{1+w\cdot ({i-1)}}\cdot w
Si=Si−1+1+w⋅(i−1)Si−1⋅w
=
S
i
−
1
⋅
1
+
w
⋅
i
1
+
w
⋅
(
i
−
1
)
=S_{i-1}\cdot\frac{1+w\cdot i}{1+w\cdot (i-1)}
=Si−1⋅1+w⋅(i−1)1+w⋅i
=
S
i
−
2
⋅
1
+
w
⋅
(
i
−
1
)
1
+
w
⋅
(
i
−
2
)
⋅
1
+
w
⋅
i
1
+
w
⋅
(
i
−
1
)
=S_{i-2}\cdot \frac{1+w\cdot(i-1)}{1+w\cdot (i-2)}\cdot \frac{1+w\cdot i}{1+w\cdot (i-1)}
=Si−2⋅1+w⋅(i−2)1+w⋅(i−1)⋅1+w⋅(i−1)1+w⋅i
=
S
i
−
2
⋅
1
+
w
⋅
i
1
+
w
⋅
(
i
−
2
)
=S_{i-2}\cdot \frac{1+w\cdot i}{1+w\cdot(i-2)}
=Si−2⋅1+w⋅(i−2)1+w⋅i
同理
S
i
−
2
S_{i-2}
Si−2能一直化下去直到
S
0
=
x
y
S_0=\frac{x}{y}
S0=yx(即初始的股权).
∴
S
i
=
(
1
+
w
⋅
i
)
⋅
S
0
=
(
1
+
w
⋅
i
)
⋅
x
y
\therefore S_i=(1+w\cdot i)\cdot S_0=(1+w\cdot i)\cdot\frac{x}{y}
∴Si=(1+w⋅i)⋅S0=(1+w⋅i)⋅yx
最后求出期望值
S
n
−
x
y
w
=
(
1
+
w
⋅
n
)
⋅
x
y
−
x
y
w
=
n
⋅
x
y
\dfrac {S_n-\frac{x}{y}}{w}=\dfrac{(1+w\cdot n)\cdot \frac{x}{y}-\frac{x}{y}}{w}=n\cdot\frac{x}{y}
wSn−yx=w(1+w⋅n)⋅yx−yx=n⋅yx
输出最后结果的逆元.
代码实现
#include<iostream>
using namespace std;
typedef long long ll;
ll mod=998244353;
ll ksm(ll x,int k){
ll res=1;
while(k){
if(k%2) res=res*x%mod;
x=x*x%mod;
k/=2;
}
return res;
}
int main(){
ll n,w,x,y;
cin>>n>>w>>x>>y;
cout<<n*x%mod*ksm(y,mod-2)%mod;
}