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 }
  • 相关阅读:
    maven项目编译漏掉src/main/java下的xml配置文件
    读《架构探险——从零开始写Java Web框架》
    使用generator自动生成Mybatis映射配置文件
    git项目添加.gitigore文件
    git-bash下, 启动sshd
    git-bash.exe参数
    少估了一分, 还算不错
    python常用库
    Linux下python pip手动安装笔记
    python学习笔记
  • 原文地址:https://www.cnblogs.com/GetcharZp/p/9068304.html
Copyright © 2011-2022 走看看