Вступление
У вас есть друг, который продолжает просить вас о займах, и вы устали от него. Сегодня он снова пришел за кредитом. Вместо того, чтобы отклонить его предложение, вы получите отличную идею: тролли своего друга, дав ему как можно больше монет / купюр.
Вызов
В качестве входных данных вы будете принимать сумму денег, на которую ваш друг хочет получить кредит, и сумму монет / счетов, которые у вас есть. Для этой задачи возможны следующие номиналы: 20,00 долл. США, 10,00 долл. США, 5,00 долл. США, 2,00 долл. США, 1,00 долл. США, 0,25 долл. США, 0,10 долл. США, 0,05 долл. США и 0,01 долл. США. Пример ввода: 5.67, [5, 3, 4, 5, 5, 9, 8, 1, 2]
если ваш друг хочет 5,67 доллара, а у вас 5 счетов 20 долларов, 3 счета 10 долларов и т. Д. В результате вы получите количество монет / счетов, которое даст вашему другу как можно больше металла / бумаги / пластика.
Если невозможно дать вашему другу точную сумму денег, которую он хочет, дайте ему самую близкую сумму, которую вы можете заплатить, больше, чем он хочет. Например, если ваш друг хочет 0,07 доллара, а у вас есть [0, 0, 0, 0, 0, 2, 4, 2, 0]
, дайте ему 2 доллара 0,05 монеты (не 1 доллар 0,10, потому что это не даст ему столько монет, сколько возможно!).
Если ваш друг хочет больше денег, чем вы, отдайте ему все свои деньги (и молитесь, чтобы вам ничего не нужно было покупать).
Контрольные примеры
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]
Это код-гольф, поэтому выигрывает самый короткий код.
2.00
и ,20.00
но нет0.2
или0.02
:(