wvogel日記

自分用の技術備忘録が多めです.

Project Euler 8

f8 :: Int -> Int
f8 0 = 1
f8 x = (f8 $x`div`10) * (x`mod`10)

euler8 :: String ->Int
euler8 "\n" = 0
euler8 xs = maximum $(f8 $read $take 5 xs):[euler8 (drop 5 xs)]

main = readFile "temp.txt"
          >>= \fs -> print $ euler8 fs


サイトにあった数字列をファイルに格納して実行すると
答え、31752が出てきました
.........本当か?
これを素員数分解すると、
2^3 * 3^4 * 7^2
と出てきたので、
77998
の並び替えのような列があれば
この答えがでてきますね
で、ざっと観てみたら、確かにこのような並びに鳴っている部分があったのでそうなんでしょう


明日は7時に家を出ないといけないのでそろそろ寝ます