Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3426789
А
Аноним
24 сентября 2025 15:25 · публичный вопрос
А
Аноним

Запрограммировать задачу: Занятия в школе начинаются в 8-30. Урок длится 45 минут, перерывы между уроками – 10 минут. Ввести номер урока и вывести время его окончания.

Ответ нейросети
24 сентября 2025 15:25

Ниже подробное решение задачи с объяснениями и примерами кода. Цель: понять, как посчитать время окончания n-го урока при заданном расписании.

Задача по сути:

  • В школе начало занятий в 8:30.
  • Урок длится 45 минут.
  • Перерывы между уроками — 10 минут (итого между концом одного урока и началом следующего – 55 минут).
  • Нужно ввести номер урока n и вывести время его окончания.

Ключевые выводы и метод

  • Время окончания первого урока: 8:30 + 45 мин = 9:15.
  • Между уроками добавляется 55 минут (перед началом следующего урока).
  • Поэтому время окончания n-го урока равно времени окончания первого плюс (n-1) интервалов по 55 минут. end_time(n) = 9:15 + (n-1) * 55 минут.
  • Можно посчитать в минуты относительно полуночи: начало 8:30 — это 8*60 + 30 = 510 минут. Конец первого урока — 510 + 45 = 555 минут = 9:15. Тогда end_time(n) = 555 + (n-1)*55 минут.
  • Чтобы вывести в формате HH:MM, переведём минуты в часы и минуты (с учётом перехода через 24:00 при больших n).

Пошаговый алгоритм

  1. Прочитать n (номер урока). Проверить, что n >= 1.
  2. Вычислить end_minutes = 555 + (n-1)*55.
  3. Вычислить часы = (end_minutes // 60) и минуты = end_minutes % 60.
  4. Привести к формату HH:MM (две цифры в каждом поле).
  5. Вывести результат.

Пример наглядной подстановки:

  • n = 1: end_minutes = 555 + 0 = 555 → 555 // 60 = 9, 555 % 60 = 15 → 09:15.
  • n = 2: end_minutes = 555 + 55 = 610 → 10:10.
  • n = 3: end_minutes = 555 + 110 = 665 → 11:05.

Простейшая реализация на Python (кто изучает Python в школе):

  • Вариант 1: простая арифметика по минутам
  • Вариант 2: через модуль datetime (для читабельности)

Вариант 1. Непосредственно расчёт в минутах

def end_time_of_lesson(n: int) -> str:
    if n < 1:
        raise ValueError("Номер урока должен быть не меньше 1")
    # конец первого урока в минутах с начала суток: 9:15 = 555 мин
    end_minutes = 555 + (n - 1) * 55
    hours = (end_minutes // 60) % 24
    minutes = end_minutes % 60
    return f"{hours:02d}:{minutes:02d}"

# Пример использования
if __name__ == "__main__":
    try:
        n_input = input("Введите номер урока: ").strip()
        n = int(n_input)
        print(end_time_of_lesson(n))
    except ValueError:
        print("Некорректный ввод: введите целое число n >= 1")

Вариант 2. С использованием модуля datetime (для понятности)

from datetime import datetime, timedelta

def end_time_of_lesson(n: int) -> str:
    if n < 1:
        raise ValueError("Номер урока должен быть не меньше 1")
    start = datetime.strptime("08:30", "%H:%M")
    end = start + timedelta(minutes=(n - 1) * 55 + 45)  # конец n-го урока
    return end.strftime("%H:%M")

# Пример использования
if __name__ == "__main__":
    try:
        n_input = input("Введите номер урока: ").strip()
        n = int(n_input)
        print(end_time_of_lesson(n))
    except ValueError:
        print("Некорректный ввод: введите целое число n >= 1")

Пояснения к коду

  • Время начала первого урока задано как 08:30.
  • Интовый вариант напрямую работает с минутами, а затем конвертирует обратно в часы:минуты.
  • Вариант с datetime нагляднее демонстрирует работу с временем и автоматически учитывает переходы через часы.

Примеры тестирования

  • Ввод n = 1 → 09:15
  • Ввод n = 2 → 10:10
  • Ввод n = 3 → 11:05
  • Ввод n = 4 → 12:00
  • Ввод n = 8 → 15:40
  • Ввод n = 10 → 17:30

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