Задать вопрос
Alexander_tt0
@Alexander_tt0
Интеграл в уме

Почему не работает код?

Задание:
Формат ввода
На первой строке входного файла задано целое число 1≤ n ≤ 26 – количество букв, которые Малыш умеет красиво рисовать. На каждой из следующих n строк указана сама буква (строчная латинская) и через пробел время в минутах (целое число в диапазоне от 1 до 100) на то, чтобы ее красиво нарисовать.

На следующей строке располагается одно целое число 1 ≤ m ≤ 20 – количество различных видов варенья. А на каждой из следующих m строк написано сначала название очередного варенья (слово состоит строчных латинских букв, длина слова не больше 10), а затем через пробел количество банок с этим вареньем (целое число в диапазоне от 1 до 100).

Гарантируется, что все названия содержат только те буквы, которые умеет рисовать Малыш.

Формат вывода
На первой строке выходного файла необходимо вывести одно целое число – количество минут для того, чтобы на каждой банке Малыш написал название варенья. Время тратится только на написание букв.

На следующих строках, по одной на каждый тип варенья, необходимо вывести название варенья и через пробел общее количество минут, необходимое, чтобы на каждой банке данного типа нарисовать надпись. Названия типов варенья необходимо вывести в алфавитном порядке
n = int (input ()) 
bykva =[] 
time =[] 
bl = "" 
bt = 0 
 
 #Инпут букв и времени
for i in range (n):
    bl, bt = input().split() 
    bykva.append(bl) 
    time.append(bt) 
 
 #Инпут названий варенья и количества
n2 = int(input ()) 
name =[] 
nameс =[]  
nm = ""
nс = 0
for i in range (n2):
    nm, nс = input().split()
    name.append(nm)
    nameс.append(nс)

vivod_list = []
vivod_list2 = []
counter = 0 
new = '' 
c=0    
i=0 
for i in range(len(name)):
    for c in range(len(name[i])):
        new=name[i]
        counter+= int(time[bykva.index(new[c])])
        c+=1
    vivod_list.append(new)
    vivod_list2.append(counter*int(nameс[i]))
    i+=1

s=0
l=0 
otvet=0
for i in range(len(vivod_list2)):
    otvet+=int(vivod_list2[i])
    i+=1
    
print(otvet)
for i in range(len(vivod_list)):
    print(vivod_list[l], vivod_list2[l])
    l+=1

Мой код, почему-то выводит неправильный ответ.
  • Вопрос задан
  • 119 просмотров
Подписаться Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
Maksim_64
@Maksim_64
Data Analyst
Ну разбей свою задачу на две части
1. Парсинг ввода пользователя и запись в подходящую структуру данных (словари)
2. Расчеты

Потом все будет просто, например.
words = {
    'm': 2,
    'a': 3,
    'l': 1,
    'i': 1,
    'n': 2,
    's': 1,
    'o': 5,
    'r': 1,
    'd': 1
}

jams = {
    'smorodina': 1,
    'malina': 2
}

total = 0

for jam, amount in jams.items():
    jam_time = 0
    for letter in jam:
        jam_time += words[letter]
    total += jam_time * amount

print(total)

Получи, вот такие словари. И потом просто обойди это дело циклами. Возможно, можно это как то оптимизировать. Надо дальше думать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы