您的位置:首页 > 其它

【BZOJ】1011 遥远的行星

2015-07-05 19:51 190 查看
【分析】

第一道估算题~

【小结】

①求1—n的函数值f[i],有两种方法:直接求,递推。

如果对于估算,更有可能是第二种。

②C++的精度不如Pascal。

【代码】

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
using namespace std;

const int T=1000;
const int N=100001;
const double eps=1e-7;

int n,g
;
double a,f
,m
,res;

int main(void)
{
scanf("%d%lf",&n,&a);
for (int i=1;i<=n;i++) scanf("%lf",&m[i]);
for (int i=1;i<=n;i++) g[i]=(int)(i*a+eps);

for (int i=1;i<=T;i++)
{
for (int j=1;j<=g[i];j++)
f[i]+=m[j]/(i-j);
f[i]*=m[i];
}
for (int i=1;i<=n-T;i++)
{
for (int j=g[i]+1;j<=g[i+T];j++) f[i+T]+=m[j]/(i+T-j);
f[i+T]+=f[i]/m[i]*(i-g[i]/2)/(i+T-g[i]/2);
f[i+T]*=m[i+T];
}
for (int i=1;i<=n;i++) printf("%0.6lf\n",f[i]);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: