На питоне через рекурсию На складе в контейнеры упаковывают пакеты с мукой. Сначала мука пакуется в пакеты ровно по L кг в каждый, а потом пакеты - в контейнеры, причем в один контейнер помещается не более K пакетов. Последний контейнер может быть неполным. Всего имеется М кг муки. Сколько всего понадобится контейнеров, сколько пакетов будет в последнем контейнере и сколько кг муки останется на складе не упаковано (упаковать нужно как можно больше муки)? Написать программу: вводятся три целых числа M, K, L в одной строке; вывести три числа в одной строке - сначала количество потребовавшихся контейнеров, затем количество пакетов в последнем контейнере, а затем количество оставшейся муки (кг)
Исходный код:
def pack(m, k, l, p=0):
c = 0 # базовый случай когда еще не создавали контейнеры
# если есть что еще фасовать по пакетам
if m >= l:
m -= l
p += 1
c, p, m = pack(m, k, l, p) # продолжаем фасовать муку
# если можно создать контейнер, то создаем
if p >= k:
p -= k
c += 1
return c, p, m
m, k, l = map(int, input().split())
print(*pack(m, k, l))
Примечание:
Часть объяснений выполнено в виде комментариев в коде. Комментарии перед отправкой на проверку рекомендую стереть.
Описание переменных: m - остаток муки на текущий момент, k - кол-во пакетов в контейнере, l - кол-во муки в пакете. c - кол-во полных контейнеров, p - кол-во полных пакетов муки. При рекурсивном погружении фасуем по пакетам, при всплытии фасуем по контейнерам. Грамотная возвращение и передача параметров делают свое дело.
Cкрин из редактора кода тоже прикрепил)