#include <stdio.h>
#include <math.h>
int aa(int a,int b)
{
int r=1,base=a;
while(b!=0)
{
if(b&1)
r*=base;
base*=base;
b>>=1;
}
return r;
}
int main()
{
if(fopen("in.txt","r")) freopen("in.txt","r",stdin);
int m,n,i,j;
double s=1.0;
double t=1.0;
double f;
scanf("%d%d",&m,&n);
for(i=2;i<=m;++i)
{
s=s+(double)i*(double)(aa(i,n)-(aa(i-1,n)));
}
t=(double)aa(m,n);
f=(1.0/t)*s;
printf("%.12lf\n",f);
return 0;
}
http://vjudge.net/contest/view.action?cid=52914#problem/A
这个题的要求推公式,关键推了,还仍然不对的节奏,我很奇怪,问了一位萌萌哒的学长,我才知道怎么回事,真的长知识了,最主要的一点就是算法精度不够,我是分开两个式子来做的,最好放到一块儿来做,公式就是:
注意:
i/m在1到0之间,n次幂就不会溢出了,代码实现形式: