MyTetra Share
Делитесь знаниями!
Задача «Полиглоты»
Время создания: 02.09.2017 12:23
Текстовые метки: task
Раздел: Python - Задачник - Множества
Запись: xintrea/mytetra_db_mcold/master/base/1504344196yj0stydu3c/text.html на raw.githubusercontent.com

Задача «Полиглоты»


Условие

Каждый из некоторого множества школьников некоторой школы знает некоторое количество языков. Нужно определить сколько языков знают все школьники, и сколько языков знает хотя бы один из школьников.

В первой строке задано количество школьников. Для каждого из школьников сперва записано количество языков, которое он знает, а затем - названия языков, по одному в строке.

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


Мое решение:

s_all, s_1, s_cur = set(), set(), set()

for i in range(int(input())):

for j in range(int(input())):

lan = input()

s_cur.add(lan)

s_all.add(lan)

s_1 = s_1.intersection(s_cur) if s_1 else s_cur

s_cur = set()

l_all, l_1 = sorted(list(s_all)), sorted(list(s_1))

print(len(l_1))

for w in range(len(l_1)): print(l_1[w])

print(len(l_all))

for k in range(len(l_all)): print(l_all[k])


Решение разрабов:

students = [{input() for j in range(int(input()))} for i in range(int(input()))]

known_by_everyone, known_by_someone = set.intersection(*students), set.union(*students)

print(len(known_by_everyone), *sorted(known_by_everyone), sep='\n')

print(len(known_by_someone), *sorted(known_by_someone), sep='\n')

 
MyTetra Share v.0.59
Яндекс индекс цитирования