zoukankan      html  css  js  c++  java
  • 大数阶乘(C/C++)

    高精度的运算在Java中是很容易实现的,就像 a + b Problem 一样,因为Java提供了相应的类库和API;但是在 C/C++ 当中就没有那么现成的类和API来让你调用了。本着“自己动手,丰衣足食”的Coder精神,还是自己上吧。让我们一起看看如何使用 C/C++ 来进行大数的阶乘吧。

    /*
     *From:《算法竞赛入门经典》――刘汝佳
     *Author:YQ_beyond
     *Date:2015.03.29
    */
    
    /*
      C++当中高精度运算
    */
    
    #include<iostream>
    #include<cstring>
    #include<cstdio>
    using namespace std;
    
    const int maxn = 3000;
    int res[maxn];
    
    int main()
    {
        int i, j, n;
        while(1)
        {
    
            scanf("%d",&n);
            memset(res,0,sizeof(res));
            res[0] = 1;
    
            int cut = 1;
            for(i = 1 ; i <= n ; i++)
            {
                int cnt = 0;
                for(j = 0;j < cut; j++)
                {
                    int s = res[j] * i + cnt;
                    res[j] = s % 10;
                    cnt = s / 10;
                }
                for(; cnt != 0; j++)
                {
                    int s = res[j] * i + cnt;
                    res[j] = s % 10;
                    cnt = s / 10;
                    cut ++;
                }
            }
    
            //for(j = maxn - 1; j >= 0; j--) if(res[j]) break;
            for(i = cut - 1; i >= 0; i--) printf("%d",res[i]);
            printf("\n");
        }
        return 0;
    }
    The quieter you become, the more you are able to hear.
  • 相关阅读:
    Python3 函数return
    Python3 函数参数
    计算机组成原理基础
    解决 Python2 和 Python3 的共存问题
    管理本地用户和组
    Linux 常用命令(二)
    Linux 控制台
    Linux 常用命令(一)
    Linux中的目录功能(Red Hat 7)
    自定义属性使用
  • 原文地址:https://www.cnblogs.com/yqbeyond/p/4391991.html
Copyright © 2011-2022 走看看