75 lines
2.6 KiB
Python
75 lines
2.6 KiB
Python
''' ****** Задание 5 из 20 *********
|
||
* После статистики по «любителям обеих каш» воспитателю захотелось знать другое: сколько детей любят только одну кашу — либо манную, либо овсяную, но не обе сразу.
|
||
|
||
Это поможет спланировать меню так, чтобы угодить каждому!
|
||
|
||
Формат ввода
|
||
В первых двух строках указывается количество детей, любящих манную и овсяную каши (
|
||
N
|
||
N и
|
||
M
|
||
M).
|
||
Затем идут
|
||
N
|
||
+
|
||
M
|
||
N+M строк — перемешанные фамилии детей.
|
||
Гарантируется, что в группе нет однофамильцев.
|
||
|
||
Формат вывода
|
||
Количество учеников, которые любят только одну кашу.
|
||
Если таких не окажется, в строке вывода нужно написать «Таких нет».
|
||
|
||
|
||
Подсказка
|
||
Для начала считайте данные. Заметьте, что если фамилия встречается в списке 2 раза - этот человек любит обе каши.
|
||
|
||
Для разнообразия рассмотрим математический подход к решению:
|
||
|
||
Для вычисления ответа нам нужно вычислить размер симметричной разности двух множеств:
|
||
∣A△B∣=∣A∪B∣−∣A∩B∣
|
||
|
||
В свою очередь, прибегнув к формуле включений-исключений:
|
||
∣A∪B∣=∣A∣+∣B∣−∣A∩B∣
|
||
|
||
Таким образом получаем:
|
||
|
||
∣A△B∣=∣A∣+∣B∣−2⋅∣A∩B∣
|
||
|
||
гдe ∣A∣ - количество детей, любящих манную кашу (N),∣B∣ - любящих овсянную кашу (M), а ∣A∩B∣ - обе каши (вычисляется при считывании данных).
|
||
|
||
Пример 1
|
||
Ввод
|
||
|
||
3
|
||
2
|
||
Васильев
|
||
Петров
|
||
Васечкин
|
||
Иванов
|
||
Михайлов
|
||
Вывод
|
||
|
||
5
|
||
'''
|
||
|
||
|
||
if __name__ == "__main__":
|
||
num_first_group = int(input())
|
||
num_second_group = int(input())
|
||
|
||
all_names = []
|
||
|
||
for person_index in range(num_first_group + num_second_group):
|
||
person_name = input()
|
||
all_names.append(person_name)
|
||
|
||
unique_names_count = len([
|
||
name for name in all_names
|
||
if all_names.count(name) == 1
|
||
])
|
||
|
||
print(unique_names_count if unique_names_count else 'Таких нет')
|
||
|
||
|