u Calculate e
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 30388 Accepted Submission(s): 13569
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.
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
题目大意
让求那个式子的值,没有输入,直接输出当n=0至n=9的时候的e的值。输出格式如Sample Output.
错误原因
只输出了n和e的值,上面的格式没有输出。坑爹啊!!!
解题思路
直接用了最简单也是最笨的方法。因为当n=0到n=2的时候,输出格式跟下面不太一样,所以我把他们另外考虑并输出,其他的按保留9位小数一起输出。
额外收获
当输出数据要求左对齐的时候,用%-d。
代码
#include<stdio.h>
int main()
{
int n;
int i;
double e,j,k;
printf("n e\n");
printf("- -----------\n");
//这里一开始没加,结果 wa了。
for(n=0;n<10;n++)
{
printf("%d ",n);
if(n==0)
printf("%-d\n",1);
else if(n==1)
printf("%-d\n",2);
else if(n==2)
printf("%-.1lf\n",2.5);
else
{
j=1;
e=1;
for(i=1;i<=n;i++)
{
j*=i;
e+=1/j;
}
printf("%-.9lf\n",e);
}
}
return 0;
}