Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 10, 2017 14:03:05

lightluck134
Зарегистрирован: 2017-12-10
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Множества

Уже несколько недель не могу решить следующую задачу, все коды не проходят, а сдавать на курсере надо уже сегодня…
Каждый из N школьников некоторой школы знает Mᵢ языков. Определите, какие языки знают все школьники и языки, которые знает хотя бы один из школьников.

Формат ввода
Первая строка входных данных содержит количество школьников N. Далее идет N чисел Mᵢ, после каждого из чисел идет Mᵢ строк, содержащих названия языков, которые знает i-й школьник. Длина названий языков не превышает 1000 символов, количество различных языков не более 1000. 1≤N≤1000, 1≤Mᵢ≤500.

Формат вывода
В первой строке выведите количество языков, которые знают все школьники. Начиная со второй строки - список таких языков. Затем - количество языков, которые знает хотя бы один школьник, на следующих строках - список таких языков.

Помогите, пожалуйста, разобраться.

Офлайн

#2 Дек. 11, 2017 17:30:34

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Множества

 students = int(input()) #получаешь количество учеников
list_set = [] # заводишь пустой список
for i in range(students):
    language = set() # для каждого ученика заводим пустое множество
    for _ in range(int(input())): # получаем количество языков для каждого ученика
        language.add(input()) # получаем язык в множество
    list_set.append(language) # добавляем множество в список
general = set.intersection(*list_set) # получаем пересечение множеств списка
polyglot = set.union(*list_set) # получаем объединение множеств
print(len(general),*sorted(general),sep = '\n') # выводим количество и язык который знают все ученики 
# через разделитель конец строки
print(len(polyglot),*sorted(polyglot),sep ='\n') # тоже но языки которые знает один ученик

или с генераторами
 students = [{input() for j in range(int(input()))} for i in range(int(input()))]
general, polyglot = set.intersection(*students), set.union(*students)
print(len(general), *sorted(general), sep='\n')
print(len(polyglot), *sorted(polyglot), sep='\n')

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version