题目
[SPOJ 1026] FAVDICE - Favorite Dice
分析
定义一回合表示经过若干次投掷,掷出一个之前没出现过的数字。考虑现在进行第 i i i 回合,那么掷出一个之前没有出现过的数字的概率是 p i = n − i + 1 n p_i=\frac{n - i + 1}{n} pi=nn−i+1,于是掷出一个之前没出现过的数字的期望次数为 E i = 1 p i = n n − i + 1 \mathbb E_i=\frac{1}{p_i} = \frac{n}{n - i + 1} Ei=pi1=n−i+1n,于是答案为 E = ∑ i = 0 n − 1 n i \mathbb E = \sum_{i = 0}^{n - 1}\frac{n}{i} E=i=0∑n−1in
代码
#include <algorithm>
#include <cstdio>
#include <cstring>
int main() {
int T; scanf("%d", &T);
while (T--) {
int N; scanf("%d", &N);
double Ans = 0;
for (int i = 0; i < N; i++)
Ans += (double)N / (N - i);
printf("%.2f\n", Ans);
}
}

本文详细解析了SPOJ1026 FAVDICE问题,通过数学概率分析,解释了如何计算掷出未出现数字的期望次数,并提供了高效的C++实现代码。
728

被折叠的 条评论
为什么被折叠?



