• 蓝桥杯 阶乘计算


    问题描述
      输入一个正整数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

    import java.util.Scanner;
    
    /**
     * @author 宗远
     *
     * 2017年3月3日
     */
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int m = sc.nextInt();
            int A[] = new int[10000];
            A[0] = 1;
            int n = 0;
            for(int i=1; i<A.length; i++){
                A[i] = 0;
            }
            
            for(int i=1; i<=m; i++){
                for(int k=0; k<A.length-1; k++){
                    A[k] = A[k]*i;
                    A[k]+=n;
                    if(A[k]>=10){
                        n = A[k]/10;
                        A[k] = A[k]-n*10;
                    }else{
                        n = 0;
                    }
                    
                }
            }
            String str="";
            for(int i=A.length-1; i>=0; i--){
                 str = str+A[i];
            }
            int j;
            for(j=0; j<str.length(); j++){
                if(str.charAt(j)!='0'){
                    break;
                }
            }
            for(int i=j; i<str.length(); i++)
                
                System.out.print(str.charAt(i));
        }
    }
  • 相关阅读:
    Leetcode Unique Binary Search Trees
    Leetcode Decode Ways
    Leetcode Range Sum Query 2D
    Leetcode Range Sum Query
    Leetcode Swap Nodes in Pairs
    Leetcode Rotate Image
    Leetcode Game of Life
    Leetcode Set Matrix Zeroes
    Leetcode Linked List Cycle II
    CF1321A
  • 原文地址:https://www.cnblogs.com/czy960731/p/6663859.html
Copyright © 2020-2023  润新知