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

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

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

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



Не зарегистрирован
ссылка на сообщение  Отправлено: 26.04.21 18:30. Заголовок: Ошибка в коде, задача 26


 f=open("C:/Users/whcuf/Desktop/Новый текстовый документ.txt") 
n,m=map(int,f.readline().split())
A=[]
B=[]
C=[]
D=[]
for i in range(n):
x,y,z=map(str,f.readline().split())
x=int(x)
y=int(y)
if z=="B":
B.append(x*y)
else:
A.append(x)
D.append(y)
print(m-sum(B))
a=0
k=0
a=m-sum(B)#1425146
for i in range(len(B)):
b=A.index(min(A))
if (min(A)*D[ b])<a):
if D[ b]!=0:
if min(A)!=0:
k+=D[ b]
a-=min(A)*D[ b]
A.remove(min(A))
else:
if (min(A)*D[ b]>a):
while min(A)*D[ b]>a:
D[ b]-=1
if min(A)*D[ b]<a:
if D[ b]!=0:
if min(A)!=0:
a-=min(A)*D[ b]
A.remove(min(A))
k+=D[ b]
print(k*b+sum(B))
print(k,a)

Предприятие производит оптовую закупку некоторых изделий A и B, на которую выделена определённая сумма денег. У поставщика есть в наличии партии этих изделий различных модификаций по различной цене. На выделенные деньги необходимо приобрести как можно больше изделий B независимо от модификации. Если у поставщика закончатся изделия B, то на оставшиеся деньги необходимо приобрести как можно больше изделий A. Известны выделенная для закупки сумма, а также количество и цена различных модификаций данных изделий у поставщика. Необходимо определить, сколько будет закуплено изделий A и какая сумма останется неиспользованной.

Входные данные.
Первая строка входного файла содержит два целых числа: N — общее количество партий изделий у поставщика и M — сумма выделенных на закупку денег (в рублях). Каждая из следующих N строк описывает одну партию и содержит два целых числа (цена одного изделия в рублях и количество изделий в партии) и один символ (латинская буква A или B), определяющий тип изделия. Все данные в строках входного файла отделены одним пробелом.

В ответе запишите два целых числа: сначала количество закупленных изделий типа A, затем оставшуюся неиспользованной сумму денег.

Пример входного файла:

4 1000

30 8 A

50 12 B

40 14 A

20 10 B

В данном случае сначала нужно купить изделия B: 10 изделий по 20 рублей и 12 изделий по 50 рублей. На это будет потрачено 800 рублей. На оставшиеся 200 рублей можно купить 6 изделий A по 30 рублей. Таким образом, всего будет куплено 6 изделий A и останется 20 рублей. В ответе надо записать числа 6 и 20.

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





Сообщение: 1
ссылка на сообщение  Отправлено: 26.04.21 18:33. Заголовок: Правильный ответ:716..


Правильный ответ:7165 245
Мой ответ:7208 272

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





Сообщение: 20
ссылка на сообщение  Отправлено: 10.06.21 15:55. Заголовок: Смотри, как делают профессионалы :S


Мой собственный код, сварганенный всего-лишь сегодня, но с правильными ответами для обеих задач XD
 
GPath = "" #__file__.rsplit("/", 1)[0] + "/"
#Начал разработку: 15:32
#Время получения ответа: 15:47 (с первой попытки ;S)
#Время модификации задачи до мульти: 15:50 (с первой попытки ;S)
def Z3755():
def Brain(R):
with open(GPath + "26-42.txt") as file:
N, S = map(int, file.readline().split())
Data = [file.readline().split() for i in range(N)]
Data = [(i[0], int(i[1]), int(i[2])) for i in Data]
#N, S = 4, 1000
#Data = ("A", 14, 12), ("Z", 30, 7), ("A", 40, 20), ("Z", 50, 15)
#Data = ("Z", 14, 12), ("A", 30, 7), ("Z", 40, 20), ("A", 50, 15)
Data = sorted(Data, key = lambda i: i[1])
A = [i[1] * i[2] for i in Data if i[0] == "AZ"[R]]
Z = [(i[1], i[2]) for i in Data if i[0] == "ZA"[R]]
S -= sum(A)
print("Отсалось после A:", S)
NZ = 0
for i in Z:
C = min(S // i[0], i[1])
#print(S, "%s/%s" % (C, i[1]), C * i[0])
S -= C * i[0]
NZ += C
print("Отсалось после Z:", S)
return NZ, S
NZ, S = Brain(0)
print("Ответ Z3755:", NZ, S)
NZ, S = Brain(1)
print("Ответ Z3754:", NZ, S)
def Z3754(): Z3755()

Z3754()


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

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