美文网首页
阶乘求和例题(高精度乘与和)

阶乘求和例题(高精度乘与和)

作者: 优劣在于己 | 来源:发表于2020-10-18 08:36 被阅读0次

    最近在洛谷上面看到一题,就想做个笔记,有关于高精度的题目

    题目:求sum=1!+2!+3!+4!+...+n! (n<=50)

    注意:用一般的c++方法肯定会超出精度,python自然不会(但是icpc与ccpc都不能用python呐),所以可以用python打表

    python打表代码:

    
    n=eval(input())
    
    ans=0
    
    d=1
    
    for i in range(1,n+1):
    
      d*=i
    
      ans+=d
    
      print(ans)
    
    
    思路:这题呢,就是每一位乘,然后再往前进

    不采用打表的完整这题的c++代码如下:

    
    #include
    
    #include<cstring>
    
    using namespace std;
    
    int a[1000],b[1000],alen=1,blen=1,n;
    
    int main(){
    
        cin>>n;
    
        memset(b,0,sizeof b);
    
        memset(a,0,sizeof a);
    
        a[1]=b[1]=1;
    
        for(int i=2;i<=n;i++){
    
            int x=0;
    
            for(int j=1;j<=alen;j++){
    
                a[j]=a[j]*i+x;
    
                x=a[j]/10;
    
                a[j]%=10;
    
            }
    
            while(x){
    
                a[++alen]=x%10;
    
                x/=10;
    
            }
    
            if(blen<alen)blen=alen;
    
            for(int j=1;j<=blen;j++){
    
                b[j]=b[j]+a[j]+x;
    
                x=b[j]/10;
    
                b[j]%=10;
    
            }
    
            while(x){
    
                b[++blen]=x%10;
    
                x/=10;
    
            }
    
            for(int i=blen;i>0;i--)
    
                cout<<b[i];
    
            cout<<endl;
    
        }
    
        for(int i=blen;i>0;i--)
    
            cout<<b[i];
    
        cout<<endl;
    
        return 0;
    
    }
    
    

    相关文章

      网友评论

          本文标题:阶乘求和例题(高精度乘与和)

          本文链接:https://www.haomeiwen.com/subject/tfbqmktx.html