パーソナルブログメモリ

a = [1, 1]
for _ in "*" * 999: a += [sum(a[-2:])]
print(a)

階乗の後ろ0の桁数問題をPython3 OCaml Haskellで解いてみる修行

2021-11-28 | ML系言語に挑む

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!まで計算可能

 


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。