- 问题链接:POJ NOI0105-35 求出e的值。
-
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
- 利用公式e = 1 + 1/1! + 1/2! + 1/3! + ... + 1/n! 求e 。
- 输入
- 输入只有一行,该行包含一个整数n(2<=n<=15),表示计算e时累加到1/n!。
- 输出
- 输出只有一行,该行包含计算出来的e的值,要求打印小数点后10位。
- 样例输入
-
10
- 样例输出
-
2.7182818011
- 提示
- 1、e以及n!用double表示
2、要输出浮点数、双精度数小数点后10位数字,可以用下面这种形式:
printf("%.10f", num); - 来源
- 2005~2006医学部计算概论期末考试
问题分析
一个简单的迭代计算,要注意的是程序要尽量简洁,计算少。
程序说明
输出格式是个要点,用C语言的输出格式通常要简单一些,C++也有自己的一套,估计能记住的人少之又少。
参考链接:(略)
AC的C++语言程序:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int n;
double e, fact;
cin >> n;
e = 1.0;
fact = 1.0;
for(int i=1; i<=n; i++) {
fact /= i;
e += fact;
}
cout << fixed << setprecision(10) << e << endl;
return 0;
}