Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №2810216
А
Аноним
19 февраля 2025 17:00 · публичный вопрос
А
Аноним

помоги сделать информатику

Ответ нейросети
19 февраля 2025 17:00

Для того чтобы решить задачу, нам нужно определить учеников, которые являются "двойниками", то есть получили одинаковые оценки, и вывести их имена.

Давайте разберемся по шагам:

  1. Извлечение данных:

    • У нас есть \( N \) имен и \( 2N \) оценок.
    • Формат данных: линия с именем и оценкой.
  2. Поиск одинаковых оценок:

    • Необходимо найти те имена, для которых есть одинаковые оценки.
  3. Вывод необходимых имен:

    • Вывести только те имена, оценки которых встречаются несколько раз.

Решение

Для решения используем словарь, где ключ будет оценкой, а значение — список имен, относящихся к этой оценке.

def find_duplicate_grades(data):
    # Создаем словарь для хранения оценок и соответствующих имен
    grades_dict = {}
    
    for item in data:
        name, grade = item.split()
        if grade not in grades_dict:
            grades_dict[grade] = []
        grades_dict[grade].append(name)
    
    # Найдем оценки, которые встречаются более одного раза, и выведем соответствующие имена
    for grade, names in grades_dict.items():
        if len(names) > 1:
            for name in names:
                print(name)

# Пример использования
data = [
    "Петров Пётр 4",
    "Сонина Софья 4",
    "Александрова Александра 3",
    "Сидоров Иван 2"
]

find_duplicate_grades(data)

Объяснение

  1. Создание словаря:

    • Каждый раз, когда встречаем новую пару "имя-оценка", добавляем оценку как ключ, а имя — в список значений.
  2. Поиск и вывод:

    • Обходим словарь и проверяем количество имен для каждой оценки.
    • Если для оценки больше чем одно имя, выводим все имена.

Пример на основе приведенных данных выводит "Петров Пётр" и "Сонина Софья" для оценки "4".