1. 程式人生 > >藍橋杯 基礎練習 階乘計算 java

藍橋杯 基礎練習 階乘計算 java

問題描述  輸入一個正整數n,輸出n!的值。
  其中n!=1*2*3*…*n。演算法描述  n!可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。使用一個數組A來表示一個大整數aA[0]表示a的個位,A[1]表示a的十位,依次類推。
  將a乘以一個整數k變為將陣列A的每一個元素都乘以k,請注意處理相應的進位。
  首先將a設為1,然後乘2,乘3,當乘到n時,即得到了n!的值。輸入格式  輸入包含一個正整數nn<=1000。輸出格式  輸出n!的準確值。樣例輸入10樣例輸出3628800
import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		int n=scan.nextInt();
		int[] a=new int[9999];
		scan.close();
		a[0]=1;
		int count=0,count2=0;
		for(int i=2;i<=n;i++) {
			int jw=0;
			for(int j=0;j<a.length;j++) {
				int temp=a[j]*i+jw;
				if(temp==0&&i!=2&&count2<=j)break;
				a[j]=temp%10;
				jw=temp/10;
				if(i!=2) count=j;
			}
			count2=count;
		}
                for(int i=count; i>=0; i--){    
                        System.out.print(a[i]);
                }    
                System.out.println();
	}

}