【CF 453A】 Little Pony and Expected Maximum (最大期望)
推一下可以发现掷出i的概率为 (i/m)^n-((i-1)/m)^n
这样递推求值即可 注意直接先求比再求幂 分子分母分开的话会爆 说了误差不超1e-4即可 不必担心精度
代码如下:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#define ll long long
using namespace std;
double pow(int i,int m,int b)
{
double ans = 1;
double a = i*1.0/m;
while(b)
{
if(b&1) ans *= a;
a *= a;
b >>= 1;
}
return ans;
}
int main()
{
double x,pre,now,sum;
int m,n,i;
scanf("%d %d",&m,&n);
sum = 0;
pre = 0;
for(i = 1; i <= m; ++i)
{
now = pow(i,m,n);
sum += i*(now-pre);
pre = now;
}
printf("%.12lf\n",sum);
return 0;
}