【问题描述】求1~N的阶乘之和S,S=1!+2!+3!+4!+…+N!,N由键盘输入,注意:13!大于213-1
【输入形式】一个正整数
【输出形式】一个实型数据
【样例输入】10
【样例输出】4.03791e+006
【样例说明】10的阶乘值很大,输出时计算机自动以指数形式输出,4.03791e+006 表示4.03791×106
解析:
这题应该不难,常规思路很容易想到——求出每个数的阶乘结果然后进行相加。但是,程序运行除了结果要准确以外,还不能超时,因此不得不进行一下优化处理:
(N+1)!=N!*(N+1)
#include<iostream>
using namespace std;
int main()
{
long long n,last=1;
double ans=0;
cin>>n;
for(int i=1;i<=n;i++)
{
last*=i;
ans+=last;
}
cout<<ans;
}