LightOj 1248 - Dice (III)(几何分布+期望)
题目链接: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次伯努利试验中,试验 k 次才得到第一次成功的机率为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 = 1; scanf("%d", &T); while(T--) { scanf("%d", &n); double sum = 0; for(int i=1; i<=n; i++) sum += 1.0/i; printf("Case %d: %.6f\n", t++, sum*n); } return 0; }