来源:牛客网
题解
在这里先贴一下 OI Wiki 上期望的定义。
根据期望的定义和题意,我们可以这样去思考这道高中数学题:
令抽到第 \(1\) 张稀有卡是事件 \(X_1\),我们令事件 \(Y_i\) 是抽第 \(i\) 张卡时能够抽到第 \(1\) 张稀有卡。很容易就能得出这个随机事件发生的概率 \(P(Y_i) = (\frac{N-M}{N})^{i-1}\times{\frac{M}{N}}\)。
那么事件 \(Y_i\) 的期望就是:
\[E(Y_i)=i\times{(\frac{N-M}{N})^{i-1}\times{\frac{M}{N}}}
\]
然后因为我们可以无限抽卡,那不妨设总共有 \(n\) \((n\to\infty)\) 种结果。
这样一来,根据期望的线性性,抽到第 \(1\) 张稀有卡的期望就是:
\[E(X_1) = \lim_{n\to{\infty}}\sum\limits_{i=1}^nE(Y)=\lim_{n\to{\infty}}\sum\limits_{i=1}^n(i\times(\frac{N-M}{N})^{i-1}\times{\frac{M}{N}})
\]
那我们怎么算这个极限呢?首先翻开我们的高等数学上册……
\(\sum\) 这个符号对于初学者(比如我)来说比较不方便观察,我们可以把上面的式子展开成这样:
\[E(X_1) = \lim_{n\to{\infty}}(1\times(\frac{N-M}{N})^0\times{\frac{M}{N}}+2\times(\frac{N-M}{N})^1\times{\frac{M}{N}}+...+n\times(\frac{N-M}{N})^{n-1}\times{\frac{M}{N}})
\]
然后把 \(\frac{M}{N}\) 提出去:
\[E(X_1) = \frac{M}{N}\times\lim_{n\to{\infty}}(1\times(\frac{N-M}{N})^0+2\times(\frac{N-M}{N})^1+3\times(\frac{N-M}{N})^2+...+n\times(\frac{N-M}{N})^{n-1})
\]
令
\[S=1\times(\frac{N-M}{N})^0+2\times(\frac{N-M}{N})^1+3\times(\frac{N-M}{N})^2+...+n\times(\frac{N-M}{N})^{n-1}\tag{5}
\]
那么
\[\frac{N-M}{N}\times{S}=1\times(\frac{N-M}{N})^1+2\times(\frac{N-M}{N})^2+3\times(\frac{N-M}{N})^3+...+n\times(\frac{N-M}{N})^n\tag{6}
\]
\((5)-(6)\) (错位相减法)得:
\[\frac{M}{N}\times{S}=(\frac{N-M}{N})^0+(\frac{N-M}{N})^1+(\frac{N-M}{N})^2+...+(\frac{N-M}{N})^{n-1}-n\times(\frac{N-M}{N})^n
\]
\[S=\frac{N}{M}\times((\frac{N-M}{N})^0+(\frac{N-M}{N})^1+(\frac{N-M}{N})^2+...+(\frac{N-M}{N})^{n-1}-n\times(\frac{N-M}{N})^n)
\]
所以:
\[E(X_1) = \lim_{n\to{\infty}}((\frac{N-M}{N})^0+(\frac{N-M}{N})^1+(\frac{N-M}{N})^2+...+(\frac{N-M}{N})^{n-1}-n\times(\frac{N-M}{N})^n)
\]
好的然后我们把 lim(n->inf)(sum[((N-M)/N)^(i-1),{i,1,n}]-((N-M)/N)^n) 输入 Wolfram|Alpha 网站中就可以得到答案(啪)。
接下来我们用等比数列求和公式 \(S_n=\frac{a_1\times{(1-q^n)}}{1-q}\) 把上式再化简。
\[E(X_1)=\lim_{n\to{\infty}}\frac{(\frac{N-M}{N})^0\times{(1-(\frac{N-M}{N})^n)}}{1-\frac{N-M}{N}}-n\times(\frac{N-M}{N})^n
\]
\[E(X_1)=\lim_{n\to{\infty}}\frac{N\times{(1-(\frac{N-M}{N})^n)}}{M}-n\times(\frac{N-M}{N})^n
\]
\[E(X_1)=\frac{N}{M}-\lim_{n\to{\infty}}(\frac{N}{M}+1)\times{n}\times{(\frac{N-M}{N})^{n}}
\]
因为当 \(n\to\infty\) 时,\((\frac{N-M}{N})^{n}\to{0}\)。
所以 \(E(X_1)=\frac{N}{M}\)。
接下来我们考虑抽第 \(2\) 张稀有卡的期望,这次事件 \(Y_i\) 的期望是:
\[E(Y_i)=i\times{(\frac{N-M}{N-1})^{i-1}\times{\frac{M-1}{N-1}}}
\]
同 \(E(X_1)\) 可得 \(E(X_2) = \frac{N-1}{M-1}\)。
同理可得 \(E(X_k)=\frac{N-K+1}{M-K+1}\)。
再根据期望的线性性,令抽到 \(K\) 张稀有卡为事件 \(Z\)。
\[E(Z)=\sum\limits_{i=1}^KE(X_i)
\]
\[E(Z)=\frac{N}{M}+\frac{N-1}{M-1}+...+\frac{N-K+1}{M-K+1}
\]
然后别化简了直接让计算机帮忙跑吧再算下去孩子死了。
AC 代码
#include <bits/stdc++.h>
using namespace std;
int t;
int n, m, k;
int cnt;
double ans;
int main()
{
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cout << setiosflags(ios::fixed) << setprecision(7);
cin >> t;
while(++cnt <= t)
{
ans = 0;
cin >> n >> m >> k;
for(int i = 0; i < k; i++) ans += (double)(n-i)/(m-i);
cout << "Case #" << cnt << ": " << ans << '\n';
}
return 0;
}