给定一个正整数n(n<=100),计算1!+2!+3!+……+n!的和值。
#include<stdio.h>
int len=1,t[10001],ans[10001],anslen,n;
int max(int x,int y)
{
if(x>=y)
return x;
else
return y;
}
void jiecheng(int v)
{
for(int i=1;i<=len;i++)
t[i]*=v;
int i=1;
while((t[i]>9)||(i<len))
{
t[i+1]+=t[i]/10;
t[i]%=10;
i++;
}
len=i;
}
void jia()
{
for(int i=1;i<=len;i++)
{
ans[i]+=t[i];
if(ans[i]>9)
{
ans[i+1]+=ans[i]/10;
ans[i]%=10;
anslen=max(anslen,i);
}
anslen=max(anslen,i);
}
}
int main()
{
scanf("%d",&n);
t[len]=1;
for(int i=1;i<=n;i++)
jiecheng(i),jia();
for(int i=anslen;i>=1;i--)
printf("%d",ans[i]);
}