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) $ [..26]

要素数mの順序集合からn個選び出し、降順に並べる並べ方はmCn.

降順に並んだ中から、部分列を適当に抜き取ってから、抜き取った後の列の前にくっつけると

その接合箇所で、順序が降順ではなく昇順になる。

部分列の選び方は2^nだがその中でn+1とおりは不適当(e.g. 全部選ぶとか)。