题目链接:http://lightoj.com/volume_showproblem.php?problem=1248

题意:有一个 n 面的骰子,问至少看到所有的面一次的所需 掷骰子 的 次数的期望;

第一个面第一次出现的概率是p1 n/n;

第二个面第一次出现的概率是p2 (n-1)/n;

第三个面第一次出现的概率是p3 (n-2)/n;

...

第 i 个面第一次出现的概率是pi (n-i+1)/n;

先看一下什么是几何分布:

几何分布: 在第n次伯努利试验中,试验 次才得到第一次成功的机率为p。详细的说是:前k-1次皆失败,第k次成功的概率为p。

几何分布的期望E(X) = 1/p;

所以所求期望为∑1/pi = n * (1+1/2+1/3+1/4+1/5+...+1/n);

#include <cstring>
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <stack>
#include <vector>
#include <queue>
using namespace std;
#define N 105
#define met(a, b) memset(a, b, sizeof(a))
#define MOD 110119 typedef long long LL; int main()
{
int n;
int T, t = ; scanf("%d", &T); while(T--)
{
scanf("%d", &n);
double sum = ;
for(int i=; i<=n; i++)
sum += 1.0/i;
printf("Case %d: %.6f\n", t++, sum*n);
}
return ;
}
04-23 03:44