pta求自然常数e的近似值

问题遇到的现象和发生背景

自然常数 e 可以用级数 1+1/1!+1/2!+⋯+1/n!+⋯ 来近似计算。本题要求对给定的非负整数 n,求该级数的前 n+1 项和。

输入格式:
输入第一行中给出非负整数 n(≤1000)。

输出格式:
在一行中输出部分和的值,保留小数点后八位

用代码块功能插入代码,请勿粘贴截图
#include
int jiecheng(int x);
int main()
{
    int i=1,n;
    long double e = 1;
    scanf("%d", &n);
    for (i = 1; i <= n; i++)
    {
        e += 1.0 / jiecheng(i);
    }
    printf("%.8Lf", e);
    return 0;
}
int jiecheng(int x)
{
    int i;
    long long int jiechengjieguo = 1;
    for (i = 1; i <= x; ++i)
    {
        jiechengjieguo *= i;
    }
    return jiechengjieguo;
}

运行结果及报错内容

最大n
答案错误

我想要达到的结果

这样写为什么错了啊

阶乘别用long long返回,应该用double
n<1000,long long根本存不下,溢出了
而且到了1000的阶乘这种级别,作为分母,已经无限趋近于0了,后面的有效数字没有任何意义,你一定要搞定指数,指数千万别搞错
只要求精确到8位有效数字,double足够了,不需要long double