Q:

Решить задачу на javascript

Помогите разобрать задачу: У Аллена много денег, а именно, на счету в банке у него  долларов. По соображениям безопасности он хочет снять всю сумму наличными, мы не будет здесь описывать эти соображения. Номиналы долларовых купюр равны 1, 5, 10, 20, 100. Какое минимальное число купюр должен получить Аллен после того, как снимет все деньги?
Входные данные
Первая и единственная строка содержит одно целое число  (1≤≤109). (125)(1000000000)(43)
Выходные данные
Выведите минимальное число купюр, которые должен получить Аллен.(3)(10000000)(5)
P.S числа в скобках на входных данных и выходных - это числа которые подставляются в N и соответсвенно числа  которые должны быть на выходе(минимальное количество купюр)
Я предполагала 1)сначала сравнить n, 100 <= n <= 10000000 и если n < 100;
2) чтобы узнать количество сотен разделить n / 100; десятков - на 10;
3) а дальше не знаю как заставить компьютер считать что ему нужно подставить 20 или 10 или 5 напимер..

A:

Могу предложить простое решение без reduce

const banknotes = [1, 5, 10, 20, 100]

const convert = (N) => {

  let min = 0

  for (let i = banknotes.length - 1; i >= 0; --i) {
    min += Math.floor(N / banknotes[i])

    N -= Math.floor(N / banknotes[i]) * banknotes[i]

  }

  return min
}

