(特別)例外処理~階乗編~

2 secs 1024 MB
Aozora_Kotori_A

問題「階乗」をC言語の int 型の変数で処理すると, を出力しようとしてオーバーフローし,正しい値が出力されない。また,負の整数の階乗はそもそも定義されていない。

では,次のようにこれらの例外を処理しよう。

  • 与えられた整数が 以上 以下なら,そのまま階乗を求める。
  • そうでなければ,もう一度入力を求める。

これを踏まえて,問題に取り組んでみよう。

問題文


与えられた整数列 に対して, を満たす最小の を求め, の階乗 の値を出力せよ。

(分かりにくいと思うので,サンプルを見ることを推奨します。)

制約


  • 入力はすべて整数
  • のうち少なくとも1つは 以上 以下である

 

入力


入力は以下の形式で標準入力から与えられます。

標準入力

出力


答えの値 を以下の形式で出力してください。

標準出力

 

サンプル1

入力
10 5 4 11 8
出力
3628800

を満たしているので, を出力します。

  

サンプル2

入力
-10 5 14 9 7
出力
120

は条件を満たしていません。次の は条件を満たしているので, を出力します。

 

サンプル3

入力
-10 14 -2 8 15
出力
40320

は条件を満たしていません。同様に も条件を満たしていません。その次の は条件を満たしているので, を出力します。

提出


Go (1.14)