zoukankan      html  css  js  c++  java
  • 阶乘计算

    题目描述
    输入一个正整数n,输出n!的值。

    其中n!=1*2*3*…*n。

    算法描述

    n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。使用一个数组A来表示一个大整数a,A[0]表示a的个位,A[1]表示a的十位,依次类推。

    将a乘以一个整数k变为将数组A的每一个元素都乘以k,请注意处理相应的进位。

    首先将a设为1,然后乘2,乘3,当乘到n时,即得到了n!的值。
    输入
    输入包含一个正整数n,n< =1000。 
    输出
    输出n!的准确值。
    样例输入
    10 
    样例输出
    3628800
    
    **c++代码如下:**
    #include <stdio.h>
    #include <stdlib.h>
    int num[5000]; 
    int jcjs(int num[],int n){
        num[0]=1;
        int len=1;
        int i;
        for(i=1;i<=n;++i){
            len=0;
            int p = 0;
            int jw=0;
            while(num[p]!=-1){ 
                num[p]*=i;
                num[p]+=jw;
                jw=0;  //进位加完置零 
                if(num[p]>=10){
                    jw=num[p]/10;
                    num[p]%=10;
                }
                p++;
                len++;
            }
            if(jw!=0){
                while(jw){ //进位值不一定是1位 要循环处理 
                    num[p++]=jw%10;
                    jw/=10;
                    len++;
                }  
            }  
        }
        return len-1;
    }
    int main(int argc, char *argv[]) {
        int n;
        while(scanf("%d",&n)!=EOF){
            memset(num,-1,sizeof(num));
            int len = jcjs(num,n);
            for(len;len >=0;--len){
                    printf("%d",num[len]); 
            }
            printf("
    ");
        }
        return 0;
    }
    
    

    java代码如下:

    import java.math.BigInteger;
    import java.util.Scanner;
    
    public class Main{
    
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int n=sc.nextInt();
            BigInteger s=BigInteger.ONE;
            for(int i=1;i<=n;i++){
            s=s.multiply(new BigInteger(i+""));
            }
            System.out.println(s);
        }
    }
    
    

    python代码如下:

    n=int(input())
    i=1
    s=1
    while(i<=n):
        s*=i
        i+=1
    print(s)
    
    不一样的烟火
  • 相关阅读:
    新框架的选择
    ‘’火星文‘’的解析
    http.request请求及在node中post请求参数解析
    http.request的请求
    ReactNative环境配置的坑
    return false与return true的区别
    什么是DOM,DOM level 123 的区别是什么
    页面重绘和回流以及优化
    时代人物之任正非
    Adriod与HTML+JS的交互
  • 原文地址:https://www.cnblogs.com/cstdio1/p/12114384.html
Copyright © 2011-2022 走看看