Introdução
Você tem um amigo que fica pedindo empréstimos e está ficando cansado disso. Hoje, ele veio pedir um empréstimo novamente. Em vez de recusar a oferta, você tem uma ótima idéia: trollar seu amigo, dando-lhe o máximo de moedas / notas possível.
Desafio
Você terá como entrada: a quantia em dinheiro pela qual seu amigo deseja um empréstimo e a quantia em moedas / notas que você possui. Para esse desafio, as denominações possíveis são US $ 20,00, US $ 10,00, US $ 5,00, US $ 2,00, US $ 1,00, US $ 0,25, US $ 0,10, US $ 0,05 e US $ 0,01. Um exemplo de entrada é 5.67, [5, 3, 4, 5, 5, 9, 8, 1, 2]
se seu amigo deseja US $ 5,67 e você possui 5 notas de US $ 20, 3 de US $ 10, etc. Sua saída será a quantidade de moedas / notas que fornecerão ao seu amigo o máximo de metal / papel / plástico possível.
Se não for possível dar a seu amigo a quantia exata que ele deseja, dê a ele a quantia mais próxima que você puder pagar, maior que o que ele deseja. Por exemplo, se seu amigo quiser US $ 0,07, mas você só o tiver [0, 0, 0, 0, 0, 2, 4, 2, 0]
, dê a ele 2 moedas de US $ 0,05 (não 1 US $ 0,10, porque isso não lhe daria o maior número possível de moedas!).
Se o seu amigo quiser mais dinheiro do que você, dê todo o seu dinheiro (e reze para que você não precise comprar nada).
Casos de teste
Input: 6.54, [9, 8, 7, 6, 5, 4, 3, 2, 4]
Output: [0, 0, 0, 1, 4, 1, 2, 1, 4]
Input: 2, [0, 1, 0, 0, 0, 0, 0, 0, 0]
Output: [0, 1, 0, 0, 0, 0, 0, 0, 0]
Input: 9999, [0, 0, 0, 0, 0, 0, 0, 0, 1]
Output: [0, 0, 0, 0, 0, 0, 0, 0, 1]
Input: 0, [99, 99, 99, 99, 99, 99, 99, 99, 99]
Output: [0, 0, 0, 0, 0, 0, 0, 0, 0]
Este é o código-golfe, pelo que o código mais curto vence.
2.00
e20.00
mas não0.2
ou0.02
:(