Обобщение классической школьной задачи по математике про три котлеты и одну сковородку. Попробуем решить её одной простой формулой. Но сначала читаем условие:
Заметим, что домножать на m можно в самом конце, поэтому дальше будем считать, что m = 1.
Для начала вспомним исходную задачу:
Вам необходимо за 3 минуты пожарить 3 котлеты. Каждая котлета с одной стороны жарится ровно минуту. Но сковородка у нас маленькая, на ней помещаются одновременно всего лишь 2 котлеты. Как в таком случае выйти из положения?
Алгоритм действий будет таким:
- жарим две котлеты минуту
- затем одну из них переворачиваем, а вторую заменяем третьей
- ждём ещё минуту, получаем одну полностью готовую котлету и две пожаренные с одной стороны
- дожариваем оставшиеся котлеты
Таким образом можем получить идею для общего случая: сначала все котлеты жарим с одной стороны, а потом дожариваем со второй. При трёх котлетах так получилось, что уже на второй минуте можно было одну из котлет начать дожаривать.
И тогда исходная задача превратиться из "пожарить n котлет" в "пожарить 2*n сторон". Если n достаточно велико, то тогда можно использовать простую формулу: n / k (но деление должно быть целочисленным и с округлением в большую сторону).
Если же n не очень большое относительно k, то может так получиться, что мы захотим жарить одну котлету сразу с обеих сторон. На такой случай достаточно поставить проверку, чтобы ответ был не меньше 2.
Объединяя все эти рассуждения в единое целое, можем получить решение в две строки:
Заметим, что вместо условия мы использовали функцию max. А округление вверх реализовали с помощью трюка с целочисленным делением.
Предыдущий выпуск: Задача 813. Игра в 24
Я очень хочу, чтобы мои советы были полезны вам, а для того, чтобы быстрее всех получать новые статьи можно подписаться на мой канал.