【Little Pony and Expected Maximum】

定义P(Y=y)P(Y=y)为投nn次,得到最大点数为yy的概率,但是这个值直接计算比较难。

可以先定义P(Yy)P(Y\le y)为最大点数小于yy的概率,则P(Y=y)=P(Yy)P(Yy1)P(Y=y)=P(Y\le y)-P(Y\le y-1)

P(Yy)=P(x1y,x2y,...,xny)=P(Xy)n=(ym)n\begin{matrix} P(Y\le y)&=&P(x_1\le y,x_2\le y,...,x_n\le y) \\ \\ &=&P(X\le y)^n \\ \\ &=&(\frac{y}{m})^n \end{matrix}

期望为:

E[Y]=y=1myP(Y=y)=y=1my[(ym)n(y1m)n]\mathbb{E}[Y]=\sum_{y=1}^my\cdot P(Y=y)=\sum_{y=1}^my\cdot [ (\frac{y}{m})^n-(\frac{y-1}{m})^n ]
#include <bits/stdc++.h>
using namespace std;

double power(double a, int b) {
    double res = 1.0;
    while (b) {
        if (b & 1) res = res * a;
        b >>= 1;
        a = a * a;
    }
    return res;
}
int n, m;
int main() {
    cin >> m >> n;
    double res = 0;
    for (int i = 1; i <= m; i++)
        res += i * (power(1.0 * i / m, n) - power(1.0 * (i - 1) / m, n));
    printf("%.12lf", res);
    return 0;
}