内存:128  时间:1

题目描述

泰勒公式是一个用函数在某点的信息描述其附近取值的公式。如果函数足够光滑的话,在已知函数在某一点的各阶导数值的情况之下,泰勒公式可以用这些导数值做系数构建一个多项式来近似函数在这一点的邻域中的值。函数的麦克劳林展开是泰勒公式的特殊形式,即泰勒公式中“某一点”取0的情况。下面是ex的麦克劳林展开式,据此求出多组ex的值。

精度要求:最后一项大于1e-7

输入

输入一个整数N,代表输入数据的组数,后随N行,每行一个小数,分别代表一个x

输出

输出N行,分别代表各行x对应的ex的值。输出精确到小数点后第7位。

样例输入

5
0
1
1.5
0.3
2.4

样例输出

1.0000000
2.7182818
4.4816890
1.3498588
11.0231763

提示

C++中,cout<<setiosflags(ios::fixed)<<setprecision(7)<<y<<endl;输出的y值保留7位小数。

代码如下

#include <iostream>
#include <iomanip>
using namespace std;
double POW(double x,int n)
{
    double sum=1;
    while(n--)
    {
        sum*=x;
    }
    return sum;
}
double jiecheng(double n)
{
    if(n==1)return 1;
    else return jiecheng(n-1)*n;
}
int main()
{
    int T;
    cin>>T;
    while(T--)
    {
        double x;
        cin>>x;
        double sum=1;
        int n=1;
        while(1)
        {
            double test=POW(x,n)/jiecheng(n);
            if(test<0.0000001)
            {
                cout<<setiosflags(ios::fixed)<<setprecision(7)<<sum<<endl;
                break;
            }
            sum+=test;
            n++;
        }
    }
    return 0;
}

代码来源于互联网,仅供参考!