題目描述

您將會得到一個整數N,輸出整數N的階乘結果。



N! = N * (N - 1) * (N - 2) * ⋯ * 3 * 2 * 1

原題網址

輸入格式

輸入一個整數N,範圍在1到100之間(包含1和100)。

輸出格式

輸出N的階乘。

範例輸入

25

範例輸出

15511210043330985984000000

注意,當N大於20的時候N階乘的結果將會超過64bit長整數所能表示的範圍,所以這題需要進行大數運算。

解題概念

直接使用Java內建的BigInteger類別來進行整數的大數運算。BigInteger物件的multiply方法可以將目前的BigInteger物件與另一個BigInteger物件進行乘法運算,接著再回傳新產生、儲存著計算結果的BigInteger物件。

參考答案

import java.math.BigInteger;
import java.util.Scanner;

public class Solution {

    public static void main(String[] args) {
        final Scanner sc = new Scanner(System.in);
        final int N = sc.nextInt();
        BigInteger result = new BigInteger("1");
        for (int i = 2; i <= N; ++i) {
            result = result.multiply(new BigInteger(String.valueOf(i)));
        }
        System.out.println(result);
    }
}