Problem 158

http://projecteuler.net/index.php?section=problems&id=158
組み合わせの問題

choose n r = div (product [n-r+1..n]) $ product [1..r]
p m n = (2^n-(n+1))*choose m n
main = print.maximum.map (p 26) $ [0..26]

素数mの順序集合からn個選び出し、降順に並べる並べ方はmCn.
降順に並んだ中から、部分列を適当に抜き取ってから、抜き取った後の列の前にくっつけると
その接合箇所で、順序が降順ではなく昇順になる。
部分列の選び方は2^nだがその中でn+1とおりは不適当(e.g. 全部選ぶとか)。