【题目描述】
用高精度计算出S=1!+2!+3!+…+n!(n≤100)�=1!+2!+3!+…+�!(�≤100),其中“!!”表示阶乘,例如:5!=5×4×3×2×15!=5×4×3×2×1。
输入正整数n�,输出计算结果S�。
【输入】
一个正整数n�。
【输出】
计算结果S�。
【输入样例】
5
【输出样例】
153
解析如下
#include<bits/stdc++.h>
using namespace std;
long long n,a[10000],sum[10000];
int main()
{
cin>>n;
a[0]=1;
a[1]=1;
sum[1]=1;
sum[0]=1;
for (int i=2;i<=n;i++)
{
for (int j=1;j<=a[0];j++)
a[j]*=i;
for (int j=1;j<=a[0];j++)
{
a[j+1]+=a[j]/10;
a[j]%=10;
}
while (a[a[0]+1]>0)
{
a[0]++;
a[a[0]+1]+=a[a[0]]/10;
a[a[0]]%=10;
}
for (int j=1;j<=a[0];j++)
{
sum[j]+=a[j];
sum[j+1]+=sum[j]/10;
sum[j]%=10;
}
sum[0]=a[0];
while (sum[sum[0]+1]>0)
{
sum[0]++;
sum[sum[0]+1]+=sum[sum[0]]/10;
sum[sum[0]]%=10;
}
}
for(int i=sum[0];i>0;i--)
cout<<sum[i];
}