题目要求给定精度n的情况下计算工程常数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
由于题目要求的精度n小于等于15,double类型能够满足要求,无需高进度计算,可从小到大计算阶乘,减少一重循环。
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int n, i;
double e = 1, num = 1;
cin >> n;
for(i = 1; i <= n; ++i) {
num *= i;
e += 1.0 / num;
}
cout << setprecision(10) << fixed << e << endl;
return 0;
}
2709.cpp 代码长度:241B 内存:200kB 时间:11ms 通过率:94% 最小内存:200kB 最短时间:0ms
阶乘和累加可在一重循环中实现,注意循环变量的起始和终止条件,以及累加器和累乘器的起始值,这里 e = 1,另外输出精度需添加头文件以及使用标识符setprecision和fixed。这道题目是之前题目要点的一次综合运用。
有任何的改进意见欢迎大家在微信平台公众号主页面留言或者发表issue。