• 问题 A: 大数阶乘


    题目描述

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

    输入

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

    输出

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

    样例输入

    50

    样例输出

    30414093201713378043612608166064768844377641568960512000000000000
     1 /*
     2 解题思路:
     3 1.大数问题,关键是处理好进位和当前最低位的关系。需要设一个变量(初始值 为0)来保存进位值。
     4 2.每次相乘得到的结果加进位变量,等于临时值,通过临时值%得当前最低位,临时值/10得进位值。
     5 3.这样乘得的结果是倒序的,因此需要倒序输出,还应注意前导0的问题,从数组最后开始,跳过前导0,
     6 直到第一个不为0的数字开始输出。*/
     7 
     8 #include<stdio.h>  
     9 int a[1000001];  
    10 int main() {  
    11     int m;  
    12     scanf("%d", &m);  
    13     int len=1;  
    14     a[1] = 1;  
    15     for(int i = 2; i <= m; ++i) {  
    16         int k = 0;  
    17         for(int j = 1; j <= len; ++j) {  
    18             int t = a[j] * i + k;  
    19             a[j] = t % 10;  
    20             k = t / 10;  
    21             if(j == len && k != 0)  
    22                 len ++;  
    23         }  
    24     }  
    25     for(int n = len; n > 0; --n)  
    26         printf("%d",a[n]);
    27     printf("
    ");
    28     return 0;
    29 }     
    View Code
  • 相关阅读:
    删除排序链表中的重复元素
    爬楼梯
    Sqrt(x)
    Add Binary
    fremarker导出word list
    url中文参数乱码问题
    取值范围
    动态添加echarts
    格式化数据保留两位小数,输入格式为 :xxx,xx,,,,x,,(x为浮点数)
    使用poi读取Excel文件数据
  • 原文地址:https://www.cnblogs.com/tong69/p/5780638.html
Copyright © 2020-2023  润新知