project_python.3.2/lesson.5.py

75 lines
2.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

''' ****** Задание 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 'Таких нет')