http://www.cnblogs.com/CtrlCV/p/5615585.html,还可以用这种方法?
#include <cstdio>
using namespace std;
double m[100005], sum[100005];
int n;
double a, ans;
int main()
{
register int i,j,k;
scanf("%d %lf",&n,&a);
for(j=1;j<=n;j++)
{
int i=(int)(a*j+1e-8);
scanf("%lf",m+j);
ans=0;
if(j<=500)
for(k=1;k<=i;k++)
ans+=m[k]*m[j]/(j-k);
else ans=sum[i]*m[j]/(j-i/2);
printf("%f\n",ans);
sum[j]=sum[j-1]+m[j];
}
return 0;
}