第三題 階乘溢位偵測

問題描述

       階乘運算可視為一個函數:f(n) = n! = 1*2*...*(n-1)*n = n*f(n-1),
其中 n ≥ 0 為自然數。由 1 開始依序由小到大連續乘,並定義初始條件
f(0) = 0! = 1。在此定義下,我們觀察到,階乘數值增加非常快速。例如,比較 f(5) = 5! =120 與 f(10) = 10! = 3,628,800,當 n 由 5 增加到 10 變 2 倍時,階乘值已變為 30,240 倍。由於電腦中所使用的整數位數有限,因此,電腦在計算階乘時常發生「溢位 Overflow」問題。若以 K 位數的十進位「非負」整數型態 "Decimal_K" 計算階乘 f(n) = n!,由於 "Decimal_K" 能表示的整數範圍為 0~(10K - 1)的整數,因此,若階乘數值超出 (10K - 1),則會發生計算溢位的錯誤。請撰寫程式,在輸入 K 值情況下,找出當 n 多大時,以 "Decimal_K" 的十進位「非負」整數型態作階乘 f(n) 計算,會「首次」發生溢位。

舉例來說:
(1) 給定 K = 1,"Decimal_1" 的值域為 [0~9],則當 n = 4 時 f(4) = 4! = 24 會首次發生溢位;
(2) 給定 K = 5,"Decimal_5" 的值域為 [0~99,999],則當 n = 9 時 f(9) = 9! = 362,880 會首次發生溢位。

輸入說明

輸入 1 個正整數 K,其中 K ≤ 50。

輸出說明

輸出 f(n)=n! 階乘計算首次發生溢位時的數值 n。

範例

輸入 輸出
1 4
5 9