Бесплатный урок с нашим репетитором!

Узнать подробнее

Новая Школа - онлайн-школа подготовки к ЕГЭ
При поддержке
Посмотреть все вопросы нейросети
Бесплатный пробный урок с репетитором

Узнай больше про репетиторов Новой Школы и запишись на бесплатный пробный урок. Мы проверим твой уровень знаний и составим план обучения по любому предмету и классу

Вопрос от Анонимного юзера 03 февраля 2026 09:12

Дано число N и 2N записей: в одной строке фамилия ученика, а в другой — его оценка. После информации об оценках записан балл — число от 2 до 5. Выведи массив с фамилиями детей, которые получили такой балл. Ввод Вывод 4 Васильев 5 Иванов 4 Петров 3 Силаева 4 4 ['Иванов', 'Силаева']

Ответ нейросети

03 февраля 2026 09:12

Ниже приведено подробное решение задачи с пошаговым объяснением и примером.

Цель задачи

  • Дан массив из 2N записей: чередуются строки с фамилиями и строки с оценками. После всех записей идёт целое число — целевой балл от 2 до 5.
  • Нужно вывести массив фамилий детей, у которых оценка равна целевому баллу.

Пошаговый разбор

  1. Считать сначала N — количество учеников.
  2. Затем для каждого ученика подряд считать две строки: фамилию и её оценку (целое число).
    • сохранить пары (фамилия, оценка) в списке records.
  3. После чтения всех 2N строк считать целевой балл target.
  4. Отфильтровать список records: взять только фамилии, где оценка == target.
  5. Вывести получившийся список фамилий в формате Python-списка, например ['Иванов', 'Силаева'].
  6. Временная сложность: O(N) по времени, память: O(N) для хранения пар.
  7. Особенности и надёжность:
    • Если ни одна фамилия не подходит — выведем пустой список [].
    • Все фамилии предполагаются однобуквенно-белыми строками без пробелов; если формат может быть другим, можно адаптировать парсинг под конкретный формат.

Пример решения на Python

def solve(): import sys

# Считываем построчно, чтобы сохранить порядок и разделение фамилии/оценки
lines = [line.strip() for line in sys.stdin.read().splitlines() if line.strip() != '']
if not lines:
    print([])
    return

idx = 0
try:
    N = int(lines[idx])
except (IndexError, ValueError):
    print([])
    return
idx += 1

records = []
for _ in range(N):
    if idx >= len(lines):
        break
    surname = lines[idx].strip()
    idx += 1
    if idx >= len(lines):
        break
    try:
        grade = int(lines[idx].strip())
    except ValueError:
        grade = None
    idx += 1
    records.append((surname, grade))

# Целевой балл — следующий непустой токен
target = None
while idx < len(lines):
    try:
        target = int(lines[idx].strip())
        break
    except ValueError:
        idx += 1
        continue

if target is None:
    print([])
    return

result = [s for s, g in records if g == target]
print(result)

Пример использования с данными из задачи

Ввод: 4 Васильев 5 Иванов 4 Петров 3 Силаева 4

Вывод: ['Иванов', 'Силаева']

Объяснение примера

  • N = 4
  • Записи по парам: (Васильев, 5), (Иванов, 4), (Петров, 3), (Силаева, 4)
  • Целевой балл = 4
  • Среди пар совпадают Иванов и Силаева, значит выведем ['Иванов', 'Силаева'].

Если нужна версия на другом языке программирования (например, JavaScript, Java, C++), или нужна более компактная версия кода, скажите — адаптирую под ваш язык. Также могу дополнительно разобрать альтернативные подходы или привести тесты.

Задай свой вопрос

Напиши любую задачу или вопрос, а нейросеть её решит

Похожие вопросы 15

Бесплатно Мобильное приложение ГДЗ
Мобильное приложение ГДЗ

Задавай вопросы искуcственному интеллекту текстом или фотографиями в приложении на iPhone или Android

qr-codegoogle-playapp-store

Саша — ассистент в телеграмме

Дано число N и 2N записей: в одной строке фамилия ученика, а в другой — его оценка. После информации об оценках записан балл — число от 2 до 5. Выведи массив с фамилиями детей, которые получили такой балл. Ввод Вывод 4 Васильев 5 Иванов 4 Петров 3 Силаева 4 4 ['Иванов', 'Силаева']
Ниже приведено подробное решение задачи с пошаговым объяснением и примером. Цель задачи - Дан массив из 2N записей: чередуются строки с фамилиями и строки с оценками. После всех записей идёт целое число — целевой балл от 2 до 5. - Нужно вывести массив фамилий детей, у которых оценка равна целевому баллу. Пошаговый разбор 1) Считать сначала N — количество учеников. 2) Затем для каждого ученика подряд считать две строки: фамилию и её оценку (целое число). - сохранить пары (фамилия, оценка) в списке records. 3) После чтения всех 2N строк считать целевой балл target. 4) Отфильтровать список records: взять только фамилии, где оценка == target. 5) Вывести получившийся список фамилий в формате Python-списка, например ['Иванов', 'Силаева']. 6) Временная сложность: O(N) по времени, память: O(N) для хранения пар. 7) Особенности и надёжность: - Если ни одна фамилия не подходит — выведем пустой список []. - Все фамилии предполагаются однобуквенно-белыми строками без пробелов; если формат может быть другим, можно адаптировать парсинг под конкретный формат. Пример решения на Python def solve(): import sys # Считываем построчно, чтобы сохранить порядок и разделение фамилии/оценки lines = [line.strip() for line in sys.stdin.read().splitlines() if line.strip() != ''] if not lines: print([]) return idx = 0 try: N = int(lines[idx]) except (IndexError, ValueError): print([]) return idx += 1 records = [] for _ in range(N): if idx >= len(lines): break surname = lines[idx].strip() idx += 1 if idx >= len(lines): break try: grade = int(lines[idx].strip()) except ValueError: grade = None idx += 1 records.append((surname, grade)) # Целевой балл — следующий непустой токен target = None while idx < len(lines): try: target = int(lines[idx].strip()) break except ValueError: idx += 1 continue if target is None: print([]) return result = [s for s, g in records if g == target] print(result) Пример использования с данными из задачи Ввод: 4 Васильев 5 Иванов 4 Петров 3 Силаева 4 Вывод: ['Иванов', 'Силаева'] Объяснение примера - N = 4 - Записи по парам: (Васильев, 5), (Иванов, 4), (Петров, 3), (Силаева, 4) - Целевой балл = 4 - Среди пар совпадают Иванов и Силаева, значит выведем ['Иванов', 'Силаева']. Если нужна версия на другом языке программирования (например, JavaScript, Java, C++), или нужна более компактная версия кода, скажите — адаптирую под ваш язык. Также могу дополнительно разобрать альтернативные подходы или привести тесты.