雑記です
2025-09-30
type I = [[Int]]
type O = Int
solve :: I -> O
solve [[n],[a,b,c]] = x
where
x = minimum [i+j+k| i <- [0..9999], j <- [0..9999-i], n >= i*a+j*b, let d = n - (i*a + j*b), d `mod` c == 0, let k = d `div` c, i+j+k <= 9999]
「A円硬貨、B円硬貨、C円硬貨の枚数を足した数」のリストを、リスト内包表記で記述した。Cの数をA、Bの数から求めることで、3重ループが2重ループになる。