F. Кашееды — 3

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

Формат ввода

В первых двух строках указывается количество детей, любящих манную и овсяную каши (N и M).
Затем идут N+M строк — перемешанные фамилии детей.
Гарантируется, что в группе нет однофамильцев.

Формат вывода:

В алфавитном порядке фамилии учеников, которые любят только одну кашу.
Если таких не окажется, в строке вывода нужно написать «Таких нет».

Пример

Ввод

3
2
Васильев
Петров
Васечкин
Иванов
Михайлов

Вывод

Васечкин
Васильев
Иванов
Михайлов
Петров

Ввод

3
3
Иванов
Петров
Васечкин
Иванов
Петров
Васечкин

Вывод

Таких нет

Решение

Изменение относительно предыдущей задачи ровно одно — нам нужно вывести не количество детей, а их фамилии в алфавитном порядке.

Это значит, что нам достаточно изменить блок вывода данных в любом из используемых вариантов. Поэтому я привожу здесь только одно, классическое решение с помощью двух множеств.

Посмотреть код

Решение

Python
# Фильтрация фамилий

list1size = int(input())
list2size = int(input())

list1 = set()
list2 = set()


for _ in range(list1size + list2size):
    eater = input()
    if eater in list1:
        list2.add(eater)
    else:
        list1.add(eater)

# print(list1, list2)

if len(junction := (list1 ^ list2)) != 0:
    for eater in sorted(junction):
        print(eater)
else:
    print('Таких нет')
Подписаться
Уведомить о
guest
8 комментариев
Старые
Новые Популярные
Ильгиз
Ильгиз
05.10.2026 09:00

Можете, пожалуйста, подсказать. Почему чекер не принимает такой вариант решения задачи:

semolina = int(input())
oatmeal = int(input())

seen = set()
duplicates = set()

for _ in range(semolina + oatmeal):
  surname = input()
  if surname in seen:
    duplicates.add(surname)
  else:
    seen.add(surname)

if len(differences := (seen ^ duplicates)) != 0:
  seen_list = list(seen)
  seen_list.sort()
  print(*seen_list, sep=’\n’)
else:
  print(‘Таких нет’)

Последний раз редактировалось 9 дней назад Ильгиз ем
Ильгиз
Ильгиз
Ответить на  Сергей Клочко
06.10.2026 13:03

Да, я сделал это намеренно, чтобы методом .sort отсортировать список и после вывести результат. Но ведь ответ получается верный, или в этом случае важно получить ответ используя множество? — т.е. чтобы именно во множестве differences были отсортированы фамилии в алфавитном порядке.

Ильгиз
Ильгиз
Ответить на  Сергей Клочко
06.10.2026 14:47

Да, я это понял, спасибо). Просто хотелось понять что именно не понравилось чекеру Яндекса, он выдал ошибку «WA» на 3 тесте)

Ильгиз
Ильгиз
Ответить на  Сергей Клочко
07.10.2026 09:13

Я всё же добился своего)). Теперь чекер яндекса принимает мой код, в котором я методом .sort отсортировал список). Но, по какой причине он принял этот вариант кода, а тот нет — я не знаю), и понять не смог)

semolina = int(input())
oatmeal = int(input())

surname_list = set()

for dishes in range(semolina + oatmeal):
  surname = input()
  if surname not in surname_list:
    surname_list.add(surname)
  else:
    surname_list.remove(surname)

if len(surname_list):
  seen_list = list(surname_list)
  seen_list.sort()
  print(*seen_list, sep='\n')
else:
  print('Таких нет')