为什么错了,是精度问题吗?
我的做法:
期望=每种方法的最大值的总和/方法数
设最大值为i的方法数为f[i],则f[i]=i^n-(i-1)^n
所以方法数为m^n,总和为sigma(f[i]*i),把每项拆开求和。
Code:
#include <cstdio>
#include <cstring>
#include <cstdlib>

using namespace std;

const int N=100001;

int n,m;
double down,t[N],res;

double mi(double i,int k)
{
if (!k) return 1;
double ans=mi(i,k>>1);
return ans*ans*(k&1?i:1);
}

int main(void)
{
scanf("%d%d",&m,&n);
for (int i=1;i<=m;i++) t[i]=mi((double)i,n);
down=t[m];
for (int i=m;i;i--) res+=(t[i]-t[i-1])*(double)i/down;
printf("%0.4lf\n",res);
return 0;
}

4 条评论

  • 1

信息

ID
1919
难度
3
分类
概率论 | 数学期望 点击显示
标签
(无)
递交数
309
已通过
147
通过率
48%
被复制
3
上传者