Life Goes On

まあまあだけど楽しんでる方です

53問目

http://projecteuler.net/index.php?section=problems&id=53
1 ≤ n ≤ 100の n に対して、nCr が百万を超えるものがいくつあるか数える。
素直に求めます。

main = print $ euler053 100

euler053 :: Integer -> Int
euler053 m = length $ filter (> 1000000) [combination n r | n <- [1..m], r <- [0..n]]

combination :: Integer -> Integer -> Integer
combination n r = div (fact n) (fact r * fact (n - r))

fact :: Integer -> Integer
fact 0 = 1
fact n = product [1..n]