[CF453A] Little Pony and Expected Maximum - 概率,组合
Description
这个骰子有M面:骰子的第一面有一个点,第二面有两个点,以此类推,第m面含有M点。当掷骰子时,每一面都有1/m的可能性出现,并且每次投掷的概率都是都是独立的。请你帮助她计算掷N次骰子后每次得到的点数中最大值的期望。
Solution
要计算最大值为 i 个概率,我们可以先计算最大值不超过 i 个概率,然后做差即可
#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{
ios::sync_with_stdio(false);
int n, m;
cin >> m >> n;
vector<double> a(m + 2);
for (int i = 1; i <= m; i++)
a[i] = pow(1.0 * i / m, n);
for (int i = m; i >= 1; i--)
a[i] = a[i] - a[i - 1];
double ans = 0;
for (int i = 1; i <= m; i++)
ans += a[i] * i;
cout << fixed << setprecision(12) << ans;
}