题目链接: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.csdn.net/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; }