Вступ
У вас є друг, який продовжує просити у вас позики, і вам це набридає. Сьогодні він знову прийшов на позику. Замість того, щоб відхиляти його пропозицію, ви отримуєте прекрасну ідею: троліть свого друга, даючи йому якомога більше монет / купюр.
Виклик
Ви будете брати до уваги: суму грошей, яку ваш друг хоче отримати, і кількість монет / рахунків у вас є. Для цього виклику можливі номінали - 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,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
:(