HDOJ 1012 u Calculate e 解题报告
u Calculate e
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 23177 Accepted Submission(s): 10216
Problem Description
A simple mathematical formula for e is
![](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.
![](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
Source
Recommend
JGShining
这道题目也没什么,
初看觉得有思路就开始写,
写着写着写到最后发现了输出上有点问题,,
不过还是解决了,
这个牛人就多了,,,
有个代码直接输出,霸气
#include<cstdio> #include<cstdlib> int main() { printf("n e\n"); printf("- -----------\n"); printf("0 1\n"); printf("1 2\n"); printf("2 2.5\n"); printf("3 2.666666667\n"); printf("4 2.708333333\n"); printf("5 2.716666667\n"); printf("6 2.718055556\n"); printf("7 2.718253968\n"); printf("8 2.718278770\n"); printf("9 2.718281526\n"); return 0; }
我自己的代码就显得长了很多
1 #include<stdio.h> 2 float func(int n); 3 int main() 4 { 5 int i, j, a[10]; 6 float sum=0; 7 for(i=0;i<10;i++) 8 a[i]=i; 9 printf("n e\n- -----------\n"); 10 for(i=0;i<10;i++) 11 { 12 for(j=0;j<=i;j++) 13 { 14 sum+=1/func(a[j]); 15 } 16 if(i==0 || i==1) 17 printf("%d %.0f\n", i, sum); 18 else if(i==2) 19 printf("%d %.1f\n", i, sum); 20 else 21 printf("%d %.9f\n", i, sum); 22 sum=0; 23 } 24 } 25 float func(int n) 26 { 27 if (n==0) 28 return 1; 29 else 30 return n*func(n-1); 31 }
这个也是一个办法,
把前面几个直接输出,
再考虑后面的情况
1 #include<stdio.h> 2 int main() 3 { 4 int i,j,k; 5 double sum; 6 printf("n e\n"); 7 printf("- -----------\n"); 8 printf("0 1\n1 2\n2 2.5\n"); 9 sum=2.5; 10 for(i=3;i<=9;i++) 11 { 12 k=1; 13 for(j=1;j<=i;j++) 14 { 15 k*=j; 16 } 17 sum+=1.0/k; 18 printf("%d %.9lf\n",i,sum); 19 } 20 return 0; 21 }