zoukankan      html  css  js  c++  java
  • AC日记——阶乘之和 洛谷 P1009(高精度)

    题目描述

    用高精度计算出S=1!+2!+3!+…+n!(n≤50)

    其中“!”表示阶乘,例如:5!=5*4*3*2*1。

    输入输出格式

    输入格式:

    一个正整数N。

    输出格式:

    一个正整数S,表示计算结果。

    输入输出样例

    输入样例#1:
    3
    
    输出样例#1:
    9



    思路:
      本来以为是道水题
      结果,写了个用unsigned long long的简单的循环只有50分
      又看了一下范围和题目才开始写的高精度


    来,上代码:
    #include<cstdio>
    #include<algorithm>
    
    using namespace std;
    
    int n,num[302],sum[302];
    
    void long_multiply(int number)
    {
        for(int i=0;i<=300;i++) num[i]*=number;
        for(int i=0;i<=300;i++)
        {
            if(num[i]>9)
            {
                num[i+1]+=num[i]/10;
                num[i]%=10;
            }
        }
    }
    
    void long_add()
    {
        for(int i=0;i<=300;i++)
        {
            sum[i]+=num[i];
            if(sum[i]>9)
            {
                sum[i+1]+=sum[i]/10;
                sum[i]%=10;
            }
        }
    }
    
    void long_print()
    {
        bool ok=false;
        for(int i=301;i>=0;i--)
        {
            if(sum[i]!=0&&!ok) ok=true;
            if(ok) putchar(sum[i]+48);
        }
        putchar('
    ');
    }
    
    int main()
    {
        num[0]=1;
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            long_multiply(i);
            long_add();
        }
        long_print();
        return 0;
    }
  • 相关阅读:
    OI省选知识清单
    FWT板子
    [APIO2018]选圆圈
    [APIO2018]铁人两项
    [Test-1.11]-T4 Transform
    [Test-1.11]-T2divisor
    [Test1.11]-T3对合
    [Test3.3]-T3 Sorting (卡常)
    [Test1.11]-T1匹配 Matching
    二、Unity调用Xcode封装方法
  • 原文地址:https://www.cnblogs.com/IUUUUUUUskyyy/p/6053062.html
Copyright © 2011-2022 走看看