zoukankan      html  css  js  c++  java
  • 1057 N的阶乘(51NOD基础题)

    1057 N的阶乘(51NOD基础题)

    基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
     
    输入N求N的阶乘的准确值。
     
    Input
    输入N(1 <= N <= 10000)
    Output
    输出N的阶乘
    Input示例
    5
    Output示例
    120

    思路:由于最终结果比较大正常的 LL 肯定是不行的 , 所以仿照 10 进制数 构造出 10000 进制数 , 对万进制数的操作仿照十进制
    #include <cstdio>
    #include <cstring>
    
    #define maxn 10000*5+5
    
    int a[maxn] = {0 , 1} ; //a[0] == 0 , a[1] == 1 , a[n] == 0 ;
    int len  ; 
    int n ; 
    
    void solve(int num ){
        int up = 0 ; 
        for(int i=1 ; i<=len ; i++){
            up = a[i] * num + up ; //
            a[i] = up % 10000 ; //求出当前万进制的数字
            up = up / 10000 ; // 当前万进制数字进位
        }
        if(up != 0){//每次乘数结束后存在进位  才会增加万进制数的长度
            a[++len] = up ; 
        }
    }
    
    int main(){ 
        while(~scanf("%d" , &n)){
            len = 1 ; 
            for(int i=1 ; i<=n ; i++){
                solve(i) ; 
            }
            
            
            printf("%d" , a[len]) ; 
            for(int i=len - 1 ; i>0 ; i--){
                printf("%04d", a[i]) ; 
            }
            printf("
    ") ; 
        }
        return 0 ; 
    }
  • 相关阅读:
    apache http server 和tomcat的区别 以及nginx
    2020-2-12 这样提升自己的口才
    两种常用的队列
    栈的实现与应用
    线性表
    Nginx实现虚拟主机
    将apache添加到服务
    apache安装
    最小生成树
    图的深度优先搜索
  • 原文地址:https://www.cnblogs.com/yi-ye-zhi-qiu/p/7553467.html
Copyright © 2011-2022 走看看