26.02 Закупка изделий двух типов
Ошибка.
Попробуйте повторить позже
Предприятие производит оптовую закупку изделий A и Z, на которую выделена определённая сумма денег. У поставщика есть в наличии партии этих изделий различных модификаций по различной цене. На выделенные деньги необходимо приобрести как можно больше изделий A (независимо от модификации). Закупать можно любую часть каждой партии. Если у поставщика закончатся изделия A, то на оставшиеся деньги необходимо приобрести как можно больше изделий Z. Известна выделенная для закупки сумма, а также количество и цена различных модификаций данных изделий у поставщика. Необходимо определить, сколько будет закуплено изделий Z и какая сумма останется неиспользованной. Если возможно несколько вариантов решения (с одинаковым количеством закупленных изделий Z), нужно выбрать вариант, при котором оставшаяся сумма максимальна.
Входные данные представлены в файле 26-42.txt следующим образом. Первая строка входного файла содержит два целых числа: N – общее количество партий изделий у поставщика и S – сумма выделенных на закупку денег (в рублях). Каждая из следующих N строк описывает одну партию изделия: сначала записана буква A или Z (тип изделия), а затем – два целых числа: цена одного изделия в рублях и количество изделий в партии. Все данные в строках входного файла разделены одним пробелом. В ответе запишите два целых числа без пробелов и разделителей: сначала количество закупленных изделий типа Z, затем оставшуюся неиспользованной сумму денег.
Пример входного файла
4 1000
A 14 12
Z 30 7
A 40 20
Z 50 15
В данном случае сначала нужно купить изделия A: 12 изделий по 14 рублей и 20 изделий по 40 рублей. На это будет потрачено 968 рублей. На оставшиеся 32 рубля можно купить 1 изделие Z по 30 рублей. Таким образом, всего будет куплено 1 изделие Z и останется 2 рубля. В ответе надо записать числа 1 и 2.
f = open(’26.txt’) n, s = map(int,f.readline().split()) batch = [] # Список всех изделий for i in range(n): type, price, count = f.readline().split() batch.append([type, int(price), int(count)]) # Сортируем сначала по типу товара, потом - по цене batch = sorted(batch, key=lambda x: (x[0], x[1])) # Добавляем первое изделие в список закупок sm = [batch.pop(0)] # Пока итоговая сумма закупок позволяет добавить еще одно изделие и не превысить s while sum(i[1]*i[2] for i in sm) + batch[0][1]*batch[0][2]< s: sm += [batch.pop(0)] # Добавляем еще одно изделие # Пока итоговая сумма закупок позволяет добавить один товар из самого из дешевых оставшихся изделий while sum(i[1]*i[2] for i in sm)+batch[0][1] < s: sm.append([batch[0][0], batch[0][1], 1]) # Добавляем по одному товару print(sum(i[2] for i in sm if i[0]==’Z’)) # Общее количество товаров типа Z print(s-sum(i[1]*i[2] for i in sm)) # Оставшееся количество денег
Копируем текст из блокнота, затем открываем редактор электронных таблиц. Вставляем скопированное, открываем страницу Данные и Текст по столбцам, жмём далее и среди символов-разделителей выбираем пробел, жмём далее и готово.
Первая строка не разделилась, ее просто удаляем.
Ищем раздел Сортировка и фильтр, выбираем настраиваемую сортировку, добавляем уровень и первым уровнем сортируем по столбцу A, вторым по B. Теперь можно считать сумму.
В столбце D пишем в первой ячейке , так мы узнаем, сколько стоит партия. Теперь протягиваем первую
ячейку вниз. Ячейке правее считаем сумму, для этого первую ячейку оставляем, в E2 пишем =D2+E1, так же
протягиваем вниз. Доходим до последней ячейки, которая не превышает бюджет, это Е414. Вычитаем из
бюджета ячейку Е414. У нас остается 10981 рубль, значит, мы можем купить еще 33 товара типа Z за 10791
рубль. У нас остается 190 рублей. Теперь из столбца B2 считаем количество товаров типа Z от самого
верхнего до D412, получается =СУММ(B264:B412), не забываем прибавить 33 докупленных. Выходит
6111.
Специальные программы

Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!
Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение
Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты
Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей
Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!