题目描述
在数学中,e是极为常用的超越数之一,它通常用作自然对数的底数。现在我们知道公式:
e=1+1/1!+1/2!+1/3!+……+1/n!(当n趋于正无穷),现在需要你求e的小数点后N位。
输入
输入一行一个正整数,代表问题描述中的N。(1< N <10000)
输出
输出一行为一个N位小数。
样例输入
3
样例输出
2.718
在数学中,e是极为常用的超越数之一,它通常用作自然对数的底数。现在我们知道公式:
e=1+1/1!+1/2!+1/3!+……+1/n!(当n趋于正无穷),现在需要你求e的小数点后N位。
输入一行一个正整数,代表问题描述中的N。(1< N <10000)
输出一行为一个N位小数。
样例输入
3
样例输出
2.718
#include <stdio.h>
double p(int n)
{
double sum = 1;
for (int i = 1; i <= n; i++)
sum *= i;
return sum;
}
int main()
{
int n;
scanf("%d", &n);
double diff = 1.0;
for (int j = 0; j < n; j++) diff /= 10.0;
double sum = 1;
int i = 1;
while (1)
{
double del = 1.0 / p(i++);
sum += del;
if (del < diff) break;
}
char fmt[10] = "%.0lf";
fmt[2] = n + '0';
printf(fmt, sum);
return 0;
}