Всё, последняя тревожная задачка месяца. Дальше задачки будут только жизнеутверждающие и позитивные. А пока — паника и тревога. В последний раз можно.
Килограммовая пачка фасоли стоит 78 рублей и занимает 0,7 литра в объёме, а такая же пачка макарон — 25 рублей и занимает 1,35 литра. У нас есть 5000 рублей. Чего и сколько нужно купить, чтобы вес итоговых продуктов получился максимальным, если в шкаф влезает не больше двухсот литров продуктов.
Эту задачку можно решить вручную с помощью математики или с помощью кода: написать программу, которая переберёт все значения и найдёт оптимальное. Гораздо проще потратить три минуты на написание кода и начальных условий, чем час на само решение.
Смысл кода будет такой: мы дадим компьютеру задание перебрать все возможные варианты и показать те, которые подходят под наши условия. Нам остаётся только найти границы для перебора и продумать условия.
Так как в шкафу всего 200 литров, то выясним, сколько максимум одного товара мы можем в него впихнуть:
фасоль — 200 / 0,7 = 285,7. Но так как 0,7 пачки не влезают, остаётся 285 пачек фасоли — максимум в шкафу.
макароны — 200 / 1,35 = 148,1. Получается, что если класть только их, то влезет 148 пачек макарон.
Теперь в этих границах мы методом простого перебора просто просмотрим все комбинации, которые можно получить. Наша задача — найти максимальный вес, который можно положить в шкаф, учитывая ограничения по объёму и бюджету.
Для этого мы в самом начале сделаем переменную, которая отвечает за максимальный вес, и будем на каждом шаге смотреть — текущая комбинация весит больше или нет. Если больше, чем текущее значение переменной, то записываем в неё новый максимальный вес и запоминаем количество пачек каждого товара.
Когда цикл закончится, нам останется только вывести эти значения — они и будут нашим ответом. Поехали писать код на Python:
# наш бюджет
money = 5000
# цена и объём фасоли
buckwheat_cost = 78
buckwheat_vol = 0.7
# цена и объём макарон
pasta_cost = 25
pasta_vol = 1.35
# задаём минимальные и максимальные количества упаковок каждого товара
buckwheat_all = range(0,286)
pasta_all = range(0,149)
# сюда мы положим результаты поиска
weight_max = 0
buckwheat_max = 0
pasta_max = 0
# перебираем все варианты с фасолью…
for buckwheat in buckwheat_all:
# … и макаронами
for pasta in pasta_all:
# берём получившееся количество упаковок и проверяем цену и объём
# если помещается в шкаф и бюджет и у этого набора максимальный вес на этом этапе — запоминаем значения
if buckwheat * buckwheat_cost + pasta * pasta_cost <= 5000 and buckwheat * buckwheat_vol + pasta * pasta_vol <= 200 and buckwheat + pasta > weight_max:
# записываем значения в нужные переменные
buckwheat_max = buckwheat
pasta_max = pasta
# каждая пачка весит 1 кило, поэтому для веса нам нужно просто сложить общее количество пачек
weight_max = buckwheat + pasta
# в конце просто выводим то, что даст нам максимальный результат
print('Максимальный вес: ', weight_max, ' кг., пачек фасоли: ',buckwheat_max,', пачек макарон: ', pasta_max)
Запустите код, чтобы узнать правильный ответ. Есть ещё и второй, но нашему коду достаточно первого.