题目链接:Codeforces Round #259 (Div. 2) C. Little Pony and Expected Maximum
求M面的骰子扔N次的最大点数的期望。
找规律。
6 3
E=1
111
N==1
E=2
112 121 211
122 212 221
222
N=7=2^n-1^n
E=3
113 131 311
223 232 322
123 132 213 231 321 312
133 331 313
233 332 323
333
N=19=3^n-2^n
......
期望就是:N*E*(1/m)^n,即 i*(i^n-(i-1)^n)*(1/m)^n。化简不然会溢出。i*((i/m)^n-((i-1)/m)^n)
AC代码:
#include<stdio.h>
double quick(double n,int p)
{
double m,b;
b=1.0;
m=n;
while(p)
{
if(p%2)
b*=m;
p/=2;
m*=m;
}
return b;
}
int main()
{
int i,j,n,m;
double ans;
while(scanf("%d%d",&m,&n)!=EOF)
{
ans=1.0*quick(1.0/m,n);
for(i=2;i<=m;i++)
{
ans+=i*(quick(1.0*i/m,n)-quick(1.0*(i-1)/m,n));
}
printf("%lf\n",ans);
}
return 0;
}