Problem 207 – Project Euler

この問題はハマッタ。

Intが桁落ちしてた…

なかなか気がつかなかった。

2*2=4なのに…

2*2=1になってたじゃないか、これぐらい、気づこうよ。

import Data.List (findIndex)
import Data.Ratio ((%), denominator)
proportion :: Integer -> [Rational]
proportion n = [(n-1) % (2^n-2-m) | m <- [..]]
p207 :: Integer -> Integer -> Integer
p207 n d = let Just m = findIndex ( < n%d) [(k-1) % (2^k-2) | k <- [2..]]
a = denominator.last.takeWhile (< n%d).proportion.toInteger $ m+2
in a*(a+1)
main :: IO ()
main = print $ p207 1 12345

もう、寝よう…