diff --git a/lesson.5.py b/lesson.5.py new file mode 100644 index 0000000..d0728f0 --- /dev/null +++ b/lesson.5.py @@ -0,0 +1,74 @@ +''' ****** Задание 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 'Таких нет') + +