Maximum number of beer bottles

Albert Davletov
UniLecs
Published in
2 min readJul 30, 2021

--

Задача: у вас есть N полных бутылок с пивом, также известно, что в приемке стеклотары вы можете обменять K пустых бутылок из под пива на одну полную бутылку с пивом.

Посчитайте максимальное количество бутылок с пивом, которое вы сможете выпить.

Входные данные: 1 <= N <= 100; 2 <= K <= 100.

Вывод: максимальное количество бутылок с пивом.

Пример:

N = 15; K = 4;
Output: 19

Разбор

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

Алгоритм:

  1. Заведем 3 переменные:
    - result — для хранения конечного результата
    - empty — количество пустых бутылок на текущей итерации
    - full — количество полных бутылок на текущей итерации
  2. Заведем цикл, цикл будет продолжаться до тех пор, пока количество полных бутылок больше 0.
  3. Добавляем в результат текущее количество полных бутылок, после этого они автоматически становятся пустыми.
  4. Обновляем перменные full, empty.
    - Количество полных бутылок теперь будет — количество пустых бутылок сдаем в приемку, деля по обменному курсу.
    - Количество пустых бутылок — это остаток от деления количества пустых бутылок на обменный курс.

Детали смотрите ниже.

Реализация

C#

https://gist.github.com/unilecs/5834c09359f102290127f3c1548c4f48

--

--