На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.

Если у вас не сходится ответ на какую-то задачу, пожалуйста сразу представляйте свое «правильное» решение.
Программы "заворачивайте" в тэг [pre2]...[/pre2], при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.

Для регистрации на форуме щелкните по ссылке «Вход-регистрация» вверху страницы. В открывшееся окошко «ник» введите свою фамилию на русском языке (например, Иванов). В окошко «пароль» введите придуманный вами пароль, состоящий из латинских букв и цифр. Поставьте галочку в окошке «зарегистрироваться, я новый участник» и нажмите кнопку «ОК».

АвторСообщение



Сообщение: 36
ссылка на сообщение  Отправлено: 06.04.21 15:32. Заголовок: Задание 26, задача 42. Не сходится ответ.




Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 6 [только новые]





Сообщение: 37
ссылка на сообщение  Отправлено: 06.04.21 15:42. Заголовок: Не сходится второй ответ к задаче 26.42


"Предприятие производит оптовую закупку изделий A и Z, на которую выделена определённая сумма денег. У поставщика есть в наличии партии этих изделий различных модификаций по различной цене. На выделенные деньги необходимо приобрести как можно больше изделий Z (независимо от модификации). Закупать можно любую часть каждой партии. Если у поставщика закончатся изделия Z, то на оставшиеся деньги необходимо приобрести как можно больше изделий A. Известна выделенная для закупки сумма, а также количество и цена различных модификаций данных изделий у поставщика. Необходимо определить, сколько будет закуплено изделий A и какая сумма останется неиспользованной.
Входные данные представлены в файле 26-42.txt следующим образом. Первая строка входного файла содержит два целых числа: N – общее количество партий изделий у поставщика и S – сумма выделенных на закупку денег (в рублях).
Каждая из следующих N строк описывает одну партию изделия: сначала записана буква A или Z (тип изделия), а затем – два целых числа: цена одного изделия в рублях и количество изделий в партии. Все данные в строках входного файла разделены одним пробелом.
В ответе запишите два целых числа: сначала количество закупленных изделий типа A, затем оставшуюся неиспользованной сумму денег."

Не совпадает второй ответ. Решение в EXCEL. Для изделий группы А осталось денег 1542858. Покупаем 7340 изделий на 1537581р, осталось 5277р. На них покупаем 13 изделий по 369р и 1 изделие по 479р. Всего изделий 7354, остался 1 р (в ответе 111р). Где у меня ошибка?

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 38
ссылка на сообщение  Отправлено: 06.04.21 20:26. Заголовок: Ответ 111 получаем п..


Ответ 111 получаем при покупке 14 изделий по 369 рублей. Требования потратить максимум денег в условии нет, поэтому верными являются оба ответа: 1 и 111. По-видимому, или условие, или ответ нуждаются в уточнении.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Сообщение: 2664
ссылка на сообщение  Отправлено: 06.04.21 21:41. Заголовок: Спасибо за замечание..


Спасибо за замечание, я поправил условие.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
ссылка на сообщение  Отправлено: 07.05.21 07:52. Заголовок: можете подсказать, к..


можете подсказать, как решить это задание? Начало получается, но когда нужно найти количество А ничего не получается...

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 1
ссылка на сообщение  Отправлено: 28.04.22 23:49. Заголовок: amem151 пишет: 1...


Алгоритм решения (Эксель):
1. Так как необходимо приобрести как можно больше изделий Z рассчитаем стоимость всех партий изделий Z.

Общая стоимость всех товаров Z = 2 457 142
На покупку товаров А осталось: 4 000 000 - 2 457 142 = 1 542 858

2. Далее будем работать только с товарами А. На оставшуюся сумму нам нужно купить как можно больше товаров А + оставшаяся сумма должна быть максимальна.

Делаем для товаров А «настраиваемую» сортировку:
- сортируем столбец В (цена) по возрастанию, т.к. чем дешевле товар тем больше мы можем его купить
- сортируем столбец С (количество) по убыванию.

Выясняем что «полных» партий товара А мы можем купить на сумму 1537581, при этом количество товаров А в этих «полых»* партиях будет = 7340 товаров. (Прим.: «полная»* партия – это когда выкуплены ВСЕ товары данной партии в полном объеме)

Еще остается для покупки 1542858 – 1537581 = 5 277 рублей.

На эту сумму мы можем купить несколько товаров по цене 369 рублей. А именно, можем купить по этой цене 14 товара А, т.к. 14*369 = 5 166 рублей и это чуть меньше нашего остатка на покупку.

Итого:
Купили товаров А: 7340 (в «полных» партиях) + 14 (товары по цене 369) = 7354
Осталось от покупки: 1542858 – 1537581 – 5166 = 111 (где 1 542 858 – сумма для покупки товаров А (осталась после покупки всех товаров Z); 1 537 581 – сумма при покупке «полных» партий товаров А)

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
ссылка на сообщение  Отправлено: 07.05.22 22:56. Заголовок: f = open('fail.t..


f = open('fail.txt')
N, S = map(int, f.readline().split()) #читаем первую строку
iz_z = []
iz_a = []
for i in range(N):
t, pr, col = f.readline().split() #читаем каждую строку
pr = int(pr)
col = int(col)
if t == 'A':
iz_a.append([pr, col, pr*col])
else:
iz_z.append([pr,col, pr*col])
for i in iz_z: #В этом цикле мы вычитаем из изначальной суммы цены всех партий Z
S -= i[2]
#заменяем название массива на "d" для удобства
d = iz_a
col = 0
d.sort(key=lambda x: (x[0], -x[1])) #Сортируем этот массив сначала по цене, потом по количеству
ans = 0
for i in d:
if S - i[2] >= 0: #Если это условие, то просто вичитаем цену партии
S -= i[2]
ans += i[1]
else: #Если это условие, то вычитаем до тех пор, пока влазим в стоимость
now_count = 0
while S > 0:
now_count += 1
S -= i[0]
#S - точно <= 0, поэтому мы точно либо уложились идеально, либо ушли на одно изделие в минус.
#Данный цикл это учитывает
if S != 0:
S += i[0]
ans += now_count-1
else:
ans += now_count
break
print(ans, S)

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 1668
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет