藍橋杯基礎練習 階乘計算(高精度方法)

 基礎練習 階乘計算  

問題描述
  輸入一個正整數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.Scanner;

/**
 * @author Administrator
 *
 */
// public class Main {
//
// /**
// * @param args
// */
// public static void main(String[] args) {
// // TODO Auto-generated method stub
// Scanner sc=new Scanner(System.in);
// int n=sc.nextInt();
//
// for (int i = 1; i <= n; i++) {
//
// sum *=i;
// }
// System.out.println(sum);
//
//
//
// }
//
// }
public class Main {
	public static void main(String[] args) {
		int[] a = new int[100000];
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		sc.close();
		a[0] = 1;

		for (int i = 2; i <= n; i++) {
			int jw = 0;
			for (int j = 0; j < a.length; j++) {
				int temp = a[j] * i + jw;
				a[j] = temp % 10;
				jw = temp / 10;
			}

		}

		boolean begin = false;

		for (int i = a.length - 1; i >= 0; i--) {
			if (begin) {
				System.out.print(a[i]);
				continue;
			}

			if (a[i - 1] != 0) {
				begin = true;
			}
		}
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章