阶乘和
用高精度计算出S=1!+2!+3!+…+n!(n≤100)
,其中“!
”表示阶乘,例如:5!=5×4×3×2×1。
输入正整数n,输出计算结果S。
【输入】
一个正整数n。
【输出】
计算结果S。
【输入样例】
5
【输出样例】
153
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
int a[1000001],b[1001],c[1001];
int main()
{
//string s;
//int a[1000001],b[1001],c[1001];
memset(a,0,sizeof(a));
//memset(b,0,sizeof(b));
//memset(c,0,sizeof(c));
int i,j,l1,l2=0,n;
cin>>n;
a[1]=1;
if(n==1)
{
cout<<"1";
}
else
{
l1=1;
for(i=2;i<=n;i++)
{
int x=0;
for(j=1;j<=l1;j++)
{
a[j]=a[j]*i+x;
if(a[j]>=10)
{
x=a[j]/10;
a[j]=a[j]%10;
if(j==l1)
{
l1++;
}
}
else
x=0;
}
for(j=1;j<=l1;j++)
{
b[j]+=a[j];
if(b[j]>=10)
{
b[j+1]+=1;
b[j]=b[j]%10;
}
}
// for(j=l1;j>=1;j--)
// {
// cout<<a[j];
// }
// cout<<endl;
}
b[1]+=1;
for(j=l1;j>=1;j--)
{
cout<<b[j];
}
}
return 0;
}