1296. 求1!+2!+3!+4!+...+n!
问题描述

请求出 1!+2!+3!+4!+...+n!,请注意,n≤50 。

n!=n∗(n−1)∗(n−2)∗...∗1 ,如:5!=5∗4∗3∗2∗1=120。

输入

请输入一个整数 n(n≤50)。

输出

输出求和的结果。

样例

输入
10
输出
4037913
语言 C++

代码:

#include <bits/stdc++.h>

#include<string>

#include<algorithm>

using namespace std;

string ch(string r,int q){

        int t=0,i,j,d,a[32767]={},b[32767]={},c[32767]={},e[32767]={};

        int l,l1; string s,s1,result;

        s = r; s1 = to_string(q);

        l=s.size(); l1=s1.size();

        for(i=0;i<=l-1;i++){

               a[i]=s[l-1-i]-'0';

        }

        for(i=0;i<=l1-1;i++){

                b[i]=s1[l1-1-i]-'0';

         }

        for(i=0;i<=l-1;i++){

                 for(j=0;j<=l1-1;j++){

                        c[i+j]+=a[i]*b[j];

                        c[i+j+1]+=c[i+j]/10;

                        c[i+j]=c[i+j]%10;

                }

         }

        d=l+l1;

        for(i=d;i>=0;i--){

                if(c[i]==0&&d>=1){

                        d--;

                 }

                else{

                        break;

                }

        }

        for(i=d;i>=0;i--){

                result+=char(c[i]+'0');

         }

        return result;

}

string dh(string f,string r){

        int i,l,l1,a[32767]={},b[32767]={},c[32767],d,t=0;

        string s,s1,result; s=f; s1=r; l=s.size();

        l1=s1.size();

         d=max(l,l1);

        for(i=0;i<=l-1;i++){

                 a[i]=s[l-1-i]-'0';

        }

         for(i=0;i<=l1-1;i++){

                 b[i]=s1[l1-1-i]-'0';

         }

        for(i=0;i<=d-1;i++){

                c[i]=(a[i]+b[i]+t)%10;

                t=(a[i]+b[i]+t)/10;

        }

         if (t==1){

                cout<<1;

        }

        for(i=d-1;i>=0;i--){

                result += char(c[i]+'0');

        }

        return result;

}

int main(){

        int i,n,j; string r,s;

        cin>>n;

         for(i=1;i<=n;i++){

                r="1";

                for(j=1;j<=i;j++){

                        r=ch(r,j);

                }

                 s=dh(s,r);

        }

         cout<<s;

}
————————————————
版权声明:本文为CSDN博主「tututyutujy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yuanheng418/article/details/141609139

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐