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

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

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

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

Вопрос от Анонимного юзера 10 октября 2025 13:53

Есть число N и 2N записей: имя в одной строке, оценка за урок в другой. Некоторые ученики отвечали несколько раз и потому попали в список тоже несколько раз. Выведи на Питоне самую низкую оценку из тех, которые получил последний ученик в списке.

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

10 октября 2025 13:53

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

Задача: дан N и 2N строк, чередующиеся: имя, затем оценка. Последний ученик — это имя из последней пары. Нужно вывести минимальную оценку, которую получал этот ученик во всём списке.

Пояснение по шагам:

  • Считать вход: сначала N, далее 2N строк (имя, оценка, имя, оценка, ...).
  • Построить список пар: (имя, оценка) для каждой пары.
  • ОпределитьLast_Name — имя из последней пары.
  • Пройтись по всем парам и выбрать все оценки последнего ученика.
  • Найти минимум среди этих оценок и вывести его.
  • Сложность: O(N) по количеству записей (один проход для сборки пар и один проход для вычисления минимума).

Пример кода:

import sys

def main():
    lines = sys.stdin.read().splitlines()
    if not lines:
        return

    N = int(lines[0].strip())

    # Собираем пары (имя, оценка)
    pairs = []
    for i in range(N):
        name_line_index = 2 * i + 1
        grade_line_index = 2 * i + 2
        if grade_line_index >= len(lines):
            break  # некорректный ввод, но обработаем без падения
        name = lines[name_line_index].rstrip('\n')
        grade = int(lines[grade_line_index].strip())
        pairs.append((name, grade))

    if not pairs:
        print(0)
        return

    last_name = pairs[-1][0]

    # Минимальная оценка последнего ученика по всем его записям
    min_grade = None
    for name, grade in pairs:
        if name == last_name:
            if min_grade is None or grade < min_grade:
                min_grade = grade

    # Если по каким-то причинам не нашли повторяющегося последнего ученика
    # (что маловероятно, но на всякий случай)
    if min_grade is None:
        min_grade = 0

    print(min_grade)

if __name__ == "__main__":
    main()

Ключевые моменты:

  • last_name берём из последней пары: имя последнего ученика в списке.
  • Затем сравниваем это имя со всеми записями и собираем минимальную оценку.
  • Выводим минимальное значение.

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

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

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

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

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

qr-codegoogle-playapp-store

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

Есть число N и 2N записей: имя в одной строке, оценка за урок в другой. Некоторые ученики отвечали несколько раз и потому попали в список тоже несколько раз. Выведи на Питоне самую низкую оценку из тех, которые получил последний ученик в списке.
Ниже подробное решение на Python с пошаговым объяснением. Задача: дан N и 2N строк, чередующиеся: имя, затем оценка. Последний ученик — это имя из последней пары. Нужно вывести минимальную оценку, которую получал этот ученик во всём списке. Пояснение по шагам: - Считать вход: сначала N, далее 2N строк (имя, оценка, имя, оценка, ...). - Построить список пар: (имя, оценка) для каждой пары. - ОпределитьLast_Name — имя из последней пары. - Пройтись по всем парам и выбрать все оценки последнего ученика. - Найти минимум среди этих оценок и вывести его. - Сложность: O(N) по количеству записей (один проход для сборки пар и один проход для вычисления минимума). Пример кода: ```python import sys def main(): lines = sys.stdin.read().splitlines() if not lines: return N = int(lines[0].strip()) # Собираем пары (имя, оценка) pairs = [] for i in range(N): name_line_index = 2 * i + 1 grade_line_index = 2 * i + 2 if grade_line_index >= len(lines): break # некорректный ввод, но обработаем без падения name = lines[name_line_index].rstrip('\n') grade = int(lines[grade_line_index].strip()) pairs.append((name, grade)) if not pairs: print(0) return last_name = pairs[-1][0] # Минимальная оценка последнего ученика по всем его записям min_grade = None for name, grade in pairs: if name == last_name: if min_grade is None or grade < min_grade: min_grade = grade # Если по каким-то причинам не нашли повторяющегося последнего ученика # (что маловероятно, но на всякий случай) if min_grade is None: min_grade = 0 print(min_grade) if __name__ == "__main__": main() ``` Ключевые моменты: - last_name берём из последней пары: имя последнего ученика в списке. - Затем сравниваем это имя со всеми записями и собираем минимальную оценку. - Выводим минимальное значение.