Форум сайта python.su
Уже несколько недель не могу решить следующую задачу, все коды не проходят, а сдавать на курсере надо уже сегодня…
Каждый из N школьников некоторой школы знает Mᵢ языков. Определите, какие языки знают все школьники и языки, которые знает хотя бы один из школьников.
Формат ввода
Первая строка входных данных содержит количество школьников N. Далее идет N чисел Mᵢ, после каждого из чисел идет Mᵢ строк, содержащих названия языков, которые знает i-й школьник. Длина названий языков не превышает 1000 символов, количество различных языков не более 1000. 1≤N≤1000, 1≤Mᵢ≤500.
Формат вывода
В первой строке выведите количество языков, которые знают все школьники. Начиная со второй строки - список таких языков. Затем - количество языков, которые знает хотя бы один школьник, на следующих строках - список таких языков.
Помогите, пожалуйста, разобраться.
Офлайн
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')
Офлайн