Problem 110

import Number
import Data.List
import Data.Maybe
dscList lim max'
| lim < 1 = [[]]
| otherwise = [x:ys|x<-[1..max'],ys<-dscList (lim' x) x]
where lim' y = lim / (2*(fromIntegral y)+1)
p110 = dscList 7999999 60
decode = product.zipWith (^) primes
main = print.minimum.map decode $ p110

少し遅いから、ちょっとやる気をだして、分枝限定法。