20 lines
648 B
Haskell
20 lines
648 B
Haskell
-- There are exactly ten ways of selecting three from five, 12345:
|
||
--
|
||
-- 123, 124, 125, 134, 135, 145, 234, 235, 245, and 345
|
||
--
|
||
-- In combinatorics, we use the notation, 5C3 = 10.
|
||
--
|
||
-- In general,
|
||
--
|
||
-- nCr = n!/(r!(n−r)!), where r ≤ n, n! = n×(n−1)×...×3×2×1, and 0! = 1.
|
||
--
|
||
-- It is not until n = 23, that a value exceeds one-million: 23C10 = 1144066.
|
||
--
|
||
-- How many, not necessarily distinct, values of nCr, for 1 ≤ n ≤ 100, are
|
||
-- greater than one-million?
|
||
|
||
import Euler
|
||
|
||
n `nCr` r = product [max r (n-r) + 1 .. n] `div` product [1 .. min r (n-r)]
|
||
main = print $ length [ () | n <- [1..100], r <- [1..n], n `nCr` r > 1000000 ]
|