Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №2998752
А
Аноним
20 марта 2025 09:55 · публичный вопрос
А
Аноним

В городе прошла олимпиада по физике. Определи статистику участников по школам. Есть строка с числом N — количеством участников олимпиады. Затем в N строках записана информация о…

Запрос пользователя

В городе прошла олимпиада по физике. Определи статистику участников по школам. Есть строка с числом N — количеством участников олимпиады. Затем в N строках записана информация о каждом участнике в формате: Фамилия Школа Результат Номер школы — положительное целое число, не превышающее 2000. Результат — число, не превосходящее 100. Выведи номера школ в порядке возрастания и количество участников из каждой школы (см. пример теста). Укажи только те школы, от которых был хотя бы один участник. Ввод Вывод 5 Светлакова 3 67 Погодин 3 23 Уральцев 4 56 Симбирцев 67 87 Усольцева 4 56 3: 2 4: 2 67: 1

Ответ нейросети
20 марта 2025 09:55

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

1. Понимание задачи

Мы имеем:

  • Первую строку, содержащую число N — количество участников.
  • Каждая из следующих N строк содержит информацию о каждом участнике в формате:
    Фамилия Школа Результат

Нам необходимо:

  1. Определить, сколько участников представляет каждую школу.
  2. Отсортировать номера школ в порядке возрастания.
  3. Вывести номера школ и количество участников от них, но только для тех школ, от которых был хотя бы один участник.

2. Структура решения

Мы можем следовать этому плану:

  1. Прочитать количество участников N.
  2. Создать словарь для хранения количества участников по каждой школе.
  3. Обработать каждый ввод, увеличивать счетчик участников для соответствующей школы.
  4. Отсортировать номера школ и вывести результаты.

3. Псевдокод

Для понимания я опишу алгоритм в виде псевдокода:

1. Считываем N
2. Создаем пустой словарь participants_per_school
3. Для i от 1 до N:
    a. Считываем строку participant_info
    b. Разбиваем participant_info на фамилию, школу, результат
    c. Получаем номер школы
    d. Если номер школы есть в participants_per_school:
        i. Увеличиваем счетчик на 1
    e. Иначе:
        i. Добавляем номер школы в словарь со значением 1
4. Сортируем список ключей словаря participants_per_school
5. Для каждого номера школы из отсортированного списка:
    a. Печатаем номер школы : количество участников

4. Реализация на Python

Теперь реализуем это в коде Python:

# Считываем количество участников
N = int(input().strip())

# Создаем словарь для хранения количества участников по школам
participants_per_school = {}

# Обрабатываем каждую строку участника
for _ in range(N):
    participant_info = input().strip().split()
    
    # Разделяем информацию
    surname = participant_info[0]
    school_number = int(participant_info[1])
    result = int(participant_info[2])  # Мы не будем использовать результат в этом решении
    
    # Увеличиваем счетчик для соответствующей школы
    if school_number in participants_per_school:
        participants_per_school[school_number] += 1
    else:
        participants_per_school[school_number] = 1

# Сортируем номера школ
sorted_schools = sorted(participants_per_school.keys())

# Печатаем результат
for school in sorted_schools:
    print(f"{school}: {participants_per_school[school]}")

5. Как работает код:

  • Мы считываем количество участников и создаём пустой словарь для записи количества участников по каждой школе.
  • В цикле перебираем каждую строку, используя метод split(), для извлечения фамилии, номера школы и результата.
  • Считаем участников в словаре.
  • В конце сортируем номера школ и выводим результаты в требуемом формате.

Теперь вы можете протестировать эту программу с различными входными данными, чтобы убедиться, что она работает правильно!