题意:
解法:
P ( X < = k ) = k n m n P ( X = k ) = P ( X < = k ) − P ( X < = k − 1 ) = k n m n − ( k − 1 ) n m n = k n − ( k − 1 ) n m n E ( X ) = ∑ k = 1 m k ∗ P ( X = k ) = ∑ k = 1 m k ∗ k n − ( k − 1 ) n m n = ∑ k = 1 m k ∗ [ ( k m ) n − ( k − 1 m ) n ] 缺 少 最 后 一 部 化 简 就 会 w a , 因 为 k n 爆 d o u b l e 了 . P(X<=k)=\frac{k^n}{m^n}\\ P(X=k)=P(X<=k)-P(X<=k-1)\\ =\frac{k^n}{m^n}-\frac{(k-1)^n}{m^n}\\ =\frac{k^n-(k-1)^n}{m^n}\\ E(X)=\sum_{k=1}^mk*P(X=k)\\ =\sum_{k=1}^mk*\frac{k^n-(k-1)^n}{m^n}\\ =\sum_{k=1}^mk*[(\frac{k}{m})^n-(\frac{k-1}{m})^n]\\ 缺少最后一部化简就会wa,因为k^n爆double了. P(X<=k)=mnknP(X=k)=P(X<=k)−P(X<=k−1)=mnkn−mn(k−1)n=mnkn−(k−1)nE(X)=k=1∑mk∗P(X=k)=k=1∑mk∗mnkn−(k−1)n=k=1∑mk∗[(mk)n−(mk−1)n]缺少最后一部化简就会wa,因为kn爆double了.
code:
#include <bits/stdc++.h>
using namespace std;
const int maxm=1e6+5;
int m,n;
signed main(){
cin>>m>>n;
double ans=0;
for(int i=1;i<=m;i++){
ans+=(pow(i*1.0/m,n)-pow((i-1)*1.0/m,n))*i;
}
printf("%.10f\n",ans);
return 0;
}