nの階乗(1*2*3*...*n)の結果、後ろに0は何桁ありますか?という問題。
昨日57%の正解率しかだせなかった解答がこちら。敗着として25を
5x5で5が2つあるという事に残り2分まで気が付かず。焦ってそこから
修正ができなかった昨日。2x5が10という所で2で割れる数と5で割れる数
のうち小さい方が0の桁数になる。
翌日、よく考えれば2と5だったら、5の数の方が少ないから5の数だけ計算すればよいことに気がつく。
25000000!まで計算可能(使用できる時間は0.1msぐらいか)
OCamlとHaskellを忘却から救いたくなって解いてみる。
OCaml
はまったのは2行目 == で比較してしまう。
200000000!まで計算可能
Haskell
やはり難しい、一番はまったのは17行目 floorの戻りはFloatではないらしく fromIntegralになんとかたどり着く
16000000!まで計算可能