求1~100的阶乘累加和

给定一个正整数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]);
}