Answer

Answer

t.me/js_test

Ответ:

const maxBeerBottles = (N, K) => {
  let [result, empty, full] = [0, 0, N];

  while (full > 0) {
    result += full;
    empty += full;

    full = Math.floor(empty / K);
    empty = empty % K;
  }
  return result;
};

Обьяснение:

Достаточно просто смоделировать процесс до тех пор, пока пустых бутылок не хватит даже на одну полную бутылку воды.

Алгоритм:

1) Заведем 3 переменные:

- result — для хранения конечного результата

- empty — количество пустых бутылок на текущей итерации

- full — количество полных бутылок на текущей итерации

2) Заведем цикл, цикл будет продолжаться до тех пор, пока количество полных бутылок больше 0.

3) Добавляем в результат текущее количество полных бутылок, после этого они автоматически становятся пустыми.

4) Обновляем перменные full, empty.

- Количество полных бутылок теперь будет — количество пустых бутылок сдаем в приемку, деля по обменному курсу.

- Количество пустых бутылок — это остаток от деления количества пустых бутылок на обменный курс.

Код для проверки:

const maxBeerBottles = (N, K) => {
  let [result, empty, full] = [0, 0, N];

  while (full > 0) {
    result += full;
    empty += full;

    full = Math.floor(empty / K);
    empty = empty % K;
  }
  return result;
};

console.log(maxBeerBottles(15, 4)); // 19



Report Page