zoukankan      html  css  js  c++  java
  • nyoj 28-大数阶乘 (大数模板)

    28-大数阶乘


    内存限制:64MB 时间限制:3000ms Special Judge: No
    accepted:19 submit:39

    题目描述:

    我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它?

    输入描述:

    输入一个整数m(0<m<=5000)

    输出描述:

    输出m的阶乘,并在输出结束之后输入一个换行符

    样例输入:

    50

    样例输出:

    30414093201713378043612608166064768844377641568960512000000000000
    

    提示:

    没有提示哦
     
    分析:
      大数相乘模板如下:
      
     1 for(int i = 1; i <= m; ++ i) // 其中数组A存的即为大数相乘的结果
     2 {
     3     int b = 0; // 处理余数问题
     4     for(int j = 1; j <= len; ++ j)
     5     {
     6         int t = b + i*A[j];
     7         A[j] = t % 10;
     8         b = t / 10;
     9         if(b > 0 && j == len) len ++;
    10     }
    11 }

    C/C++代码实现(AC):

     1 #include <iostream>
     2 #include <algorithm>
     3 #include <cstring>
     4 #include <cstdio>
     5 #include <cmath>
     6 #include <stack>
     7 #include <map>
     8 #include <queue>
     9 
    10 using namespace std;
    11 const int MAXN = 100005;
    12 
    13 int main()
    14 {
    15     int m, A[MAXN] = {1, 1}, len = 1;
    16     scanf("%d", &m);
    17 
    18     for(int i = 1; i <= m; ++ i)
    19     {
    20         int b = 0;
    21         for(int j = 1; j <= len; ++ j)
    22         {
    23             int t = i * A[j] + b;
    24             A[j] = t % 10;
    25             b = t / 10;
    26             if (j == len && b > 0) ++len;
    27         }
    28     }
    29 
    30     for(int i = len; i >= 1; -- i)
    31         printf("%d", A[i]);
    32     printf("
    ");
    33     return 0;
    34 }
  • 相关阅读:
    php中的多态
    面向对象的继承与组合
    PHP中的__call和__callStatic方法
    PHP中的__set和__get方法
    PHP中对象的本质
    mysql字符串查找(统计客源)
    linux查看文件大小
    mysql常用字符串操作函数大全,以及实例
    mysql滑动订单问题
    mysql列反转Pivoting
  • 原文地址:https://www.cnblogs.com/GetcharZp/p/9068304.html
Copyright © 2011-2022 走看看