2014년 9월 16일 화요일

Euler Project: Problem 31

In England the currency is made up of pound, £, and pence, p, and there are eight coins in general circulation:
1p, 2p, 5p, 10p, 20p, 50p, £1 (100p) and £2 (200p).
It is possible to make £2 in the following way:
1×£1 + 1×50p + 2×20p + 1×5p + 1×2p + 3×1p
How many different ways can £2 be made using any number of coins?


main = print $ length $ coinSum 200 
coinSum n = [ [oneP, twoP, fiveP, tenP, twentyP, fiftyP, oneL, twoL] |
    oneP    <- [0 .. n],
    twoP    <- [0, 2 .. n - oneP],
    fiveP   <- [0, 5 .. n - (oneP + twoP)],
    tenP    <- [0, 10 .. n - (oneP + twoP + fiveP)],
    twentyP <- [0, 20 .. n - (oneP + twoP + fiveP + tenP)],
    fiftyP  <- [0, 50 .. n - (oneP + twoP + fiveP + tenP + twentyP)],
    oneL    <- [0, 100 .. n - (oneP + twoP + fiveP + tenP + twentyP + fiftyP)],
    twoL    <- [0, 200 .. n - (oneP + twoP + fiveP + tenP + twentyP + fiftyP + oneL)],
    oneP + twoP + fiveP + tenP + twentyP + fiftyP + oneL + twoL == 200] 
*Main> main
73682


댓글 없음:

댓글 쓰기