感觉自己思维定势了,明明dp写不来也没有往期望定义上面想
求 期 望 定 义 : ∑ 价 值 ∗ 概 率 求期望定义:\sum价值*概率 求期望定义:∑价值∗概率
考虑如何求最大点为 k k k时出现的次数
每一次点数在 [ 1 , k ] [1,k] [1,k]概率是 k m \frac{k}{m} mk,所以 n n n次不超过 k k k概率是 ( k m ) n (\frac{k}{m})^n (mk)n
n n n次点数不超过 k − 1 k-1 k−1的概率是 ( k − 1 m ) n (\frac{k-1}{m})^n (mk−1)n
那么最大值为 k k k的概率就是 ( k m ) n − ( k − 1 m ) n (\frac{k}{m})^n-(\frac{k-1}{m})^n (mk)n−(mk−1)n
若此一来,枚举 k k k即可
#include <bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
int n,m;
double ans=0;
double quick_pow(double x,int n)
{
double ans=1;
while( n )
{
if( n&1 ) ans=ans*x;
x=x*x;
n>>=1;
}
return ans;
}
int main()
{
cin >> m >> n;
for(int i=1;i<=m;i++)
{
double k=i*1.0;
ans+=i*( quick_pow(k/m,n )-quick_pow( (k-1)/m,n) );
}
printf("%.6lf",ans);
}