题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1007
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
for (double x=0; x<=2.0; x+=0.001)
{
double sum = 0;
for (int k=1; k<5000; k++)
sum += (1-x)/(k * (k + 1) * (k + x));
sum += (1-x)/(2 * 5000 * 5000) + 1.0;
printf("%5.3lf %16.12lf\n",x,sum);
}
return 0;
}
第二种方法:
#include <cstdio>
#include<math.h>
using namespace std;
int main()
{
double x;
double sr2;
double sum;
for (x=0.000; x<=2.000; x+=0.001)
{
sum = 0.0;
sr2 = 0.0;
for (int k=1; k<6000; k++)
sr2 += 1.0/((double)k * (k + 1) * (k + 2) * (k + x)); //强制类型转换不能少(不知道为什么<img alt="哭" src="http://static.blog.youkuaiyun.com/xheditor/xheditor_emot/default/cry.gif" />)
sum += (1.0-x) * ((2.0-x) * sr2 + 0.25) + 1.0;
printf("%5.3lf %16.12lf\n",x,sum);
}
return 0;
}