Сделал 5 задание
This commit is contained in:
parent
e6d23573cf
commit
82af5281a1
74
lesson.5.py
Normal file
74
lesson.5.py
Normal file
|
|
@ -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 'Таких нет')
|
||||
|
||||
|
||||
Loading…
Reference in a new issue