問題「階乗」をC言語の int
型の変数で処理すると,13!=6227020800 を出力しようとしてオーバーフローし,正しい値が出力されない。また,負の整数の階乗はそもそも定義されていない。
では,次のようにこれらの例外を処理しよう。
- 与えられた整数が 1 以上 12 以下なら,そのまま階乗を求める。
- そうでなければ,もう一度入力を求める。
これを踏まえて,問題に取り組んでみよう。
問題文
与えられた整数列 a1, a2, a3, a4, a5 に対して,1≦ai≦12 を満たす最小の i を求め,ai の階乗 ai! の値を出力せよ。
(分かりにくいと思うので,サンプルを見ることを推奨します。)
制約
- 入力はすべて整数
- −15≦ai≦15(i=1, 2,…, 5)
- a1, a2,…, a5 のうち少なくとも1つは 1 以上 12 以下である
入力
入力は以下の形式で標準入力から与えられます。
出力
答えの値 A を以下の形式で出力してください。
サンプル1
a1=10 は 1≦a1≦12 を満たしているので,a1! を出力します。
サンプル2
a1=−10 は条件を満たしていません。次の a2=5 は条件を満たしているので,a2! を出力します。
サンプル3
a1=−10 は条件を満たしていません。同様に a2, a3 も条件を満たしていません。その次の a4=8は条件を満たしているので,a4! を出力します。