wvogel日記

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

Project Euler 340

a = 50
b = 2000
c = 40

main = putStrLn s

s :: String
s = show.sum $ map f [0..b]

f :: Integer -> Integer
f n | n >  b = n - c
    | n <= b = f (a+ f (a+ f (a+ f (a+n))))

試験勉強してたらHaskell触りたくなって
340番の問題に挑戦!
これは例題として載っていたもの。
動かしてみたらちゃんと答えがでました
ここで、
a = 7^21
b = 21^7
c = 12^7
として
sを計算してやるとメモリが足りずに計算できず........
なんだと......


うーん。
Haskellで多桁演算を考えないといけないとは思わなかった。
どうしたものか