Back to questions
Middle+
8
Есть банкомат с банкнотами заданного номинал. Пользователь выбирает кол-во денег которое он хочет получить. Банкомат должен отдать введенную пользователем сумму минимальным кол-вом банкнот. Напишите функцию банкомата. function atm(notes, sum) { } // atm([1, 5, 50, 100], 362) => [100,100,100,50, 5, 5, 1, 1]
Companies where asked
Morizo
Answer from AI
sobes.tech AI
Для решения задачи выдачи минимального количества банкнот можно использовать жадный алгоритм: сортируем номиналы по убыванию и последовательно вычитаем максимальные возможные банкноты из суммы.
function atm(notes, sum) {
notes.sort((a, b) => b - a); // сортируем по убыванию
const result = [];
for (const note of notes) {
while (sum >= note) {
sum -= note;
result.push(note);
}
}
if (sum !== 0) {
// если сумма не может быть выдана заданными номиналами
return [];
}
return result;
}
// Пример
console.log(atm([1, 5, 50, 100], 362));
// Вывод: [100, 100, 100, 50, 5, 5, 1, 1]
Этот алгоритм работает корректно, если номиналы банкнот позволяют выдать любую сумму (например, есть банкнота 1). Если нет, то возможны случаи, когда сумма не может быть выдана.