题目描述
用高精度计算出S=1!+2!+3!+⋯+n!(n≤50)。
其中 !
表示阶乘,定义为 n!=n×(n−1)×(n−2)×⋯×1。例如,5!=5×4×3×2×1=1205!=5×4×3×2×1=120。
输入格式
一个正整数 n。
输出格式
一个正整数 S,表示计算结果。
输入输出样例
输入 #1
3
输出 #1
9
思路
先算阶乘,然后用高精度算和,最后输出
#include <bits/stdc++.h>
using namespace std;
int a[101],sum[101],n,t;
int main()
{cin>>n;a[0]=sum[0]=1;for(int i=2;i<=n;i++){for(int j=0;j<100;j++){a[j]*=i;}for(int j=0;j<100;j++){t+=a[j];a[j]=t%10;t/=10;}for(int j=0;j<100;j++){sum[j]+=a[j];t+=sum[j];sum[j]=t%10;t/=10;}}int k;for(k=99;k>0&&sum[k]==0;k--);for(int i=k;i>=0;i--) cout<<sum[i];return 0;
}