[NOIP1998 普及组] 阶乘之和

#include<iostream>
#include<string>
using namespace std;
int a[1000],c[1000],len;
int main()
{
    int n;cin>>n;
    a[1]=1,len=1;
    for(int i=1;i<=n;i++)
    {    /*
        1(a[1])2(a[2])0(a[3])
        */
        for(int j=1;j<=len;j++)
        {
            a[j]*=i;//阶乘 
        }
        for(int i=1;i<=len;i++)
        {
            a[i+1]+=a[i]/10;a[i]%=10;//进位 
            if(a[len+1]>0) len++;//长度判断 
        }
        for(int i=1;i<=len;i++)
        {
            c[i]+=a[i];//保留相加 
            c[i+1]+=c[i]/10;//进位 
            c[i]=c[i]%10;//进位 
            if(c[len+1]) len++;//长度判断 
        }
    }
    for(int i=len;i>=1;i--) cout<<c[i];//倒序输出 
    return 0;
}

版权声明 :

若文中无特殊说明,则本文为原创文章,版权归 幻沙 所有。
所有原创文章采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。
您可以自由的转载和修改,但请务必注明文章来源并且不可用于商业目的。

本文链接:

https://crash-logs.cn/wrong/crash-2021-05-14_160-client.txt
1 + 2 =
快来做第一个评论的人吧~