u Calculate e
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 30032 Accepted Submission(s): 13385
Problem Description
A simple mathematical formula for e is
where n is allowed to go to infinity. This can actually yield very accurate approximations of e using relatively small values of n.
![](http://acm.hdu.edu.cn/data/images/1012-1.gif)
where n is allowed to go to infinity. This can actually yield very accurate approximations of e using relatively small values of n.
Output
Output the approximations of e generated by the above formula for the values of n from 0 to 9. The beginning of your output should appear similar to that shown below.
Sample Output
n e - ----------- 0 1 1 2 2 2.5 3 2.666666667 4 2.708333333
这个题目我WA了几次
![大哭](http://static.blog.csdn.net/xheditor/xheditor_emot/default/wail.gif)
WA的代码:
![抓狂](http://static.blog.csdn.net/xheditor/xheditor_emot/default/crazy.gif)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main()
{
puts("n e");
puts("- -----------");
puts("0 1");
puts("1 2");
puts("2 2.5");
double e=1.0,fac=1.0;
int i;
for(i=1;i<=9;i++)
{
fac/=(double)i;
e+=fac;
if(i>=3)
printf("%d %.9lf\n",i,e);
}
return 0;
}
对的代码:
#include"stdio.h"
int main()
{
double sum;
int i,j,k,p;
printf("n e\n- -----------\n");
for(i=0;i<=9;i++)
{
sum=1;
for(j=1;j<=i;j++)
{
p=1;
for(k=2;k<=j;k++)
p=p*k;
sum=sum+1.0/p;
}
if(i<=1)
printf("%d %.0lf\n",i,sum);
else if(i==2)
printf("2 2.5\n");
else if(i>2)
printf("%d %.9lf\n",i,sum);
}
return 0;
}