Сколько времени уйдёт на рекламу
Условие
Ты смотришь запись урока длительностью n минут в плеере. Плеер вставляет рекламу так:
- после каждых a полностью просмотренных минут включается рекламный ролик длительностью b секунд;
- реклама включается только если после этого ты ещё не досмотрел урок (то есть после окончания последней минуты рекламы уже не будет).
Найди, сколько секунд пройдёт от начала просмотра до конца урока вместе со всей рекламой.
Важно: числа могут не помещаться в 32-битный тип (как на олимпиадах), используй 64-битные вычисления. В Python это уже сделано.
Формат ввода
В одной строке три целых числа a b n.
Формат вывода
Выведи одно целое число — общее время просмотра в секундах.
Ограничения
1 ≤ a ≤ 10^91 ≤ b ≤ 10^91 ≤ n ≤ 10^9
Пример
Ввод:
10 30 25
Вывод:
1560Как решать — идея подхода
Приём: Целочисленное деление (подсчёт событий по периодам)
Ключевое наблюдение: реклама включается после минут a, 2a, 3a, ... но только если этот момент строго раньше конца урока. То есть мы считаем все кратные a, которые меньше n.
Приём: целочисленное деление. Вместо симуляции минут (это слишком долго при n до 1e9) можно напрямую посчитать число срабатываний.
Как посчитать количество реклам:
- Моменты включения:
k*a, где k = 1,2,3,... - Условие «реклама не после конца»:
k*a < n. - Значит максимальное k:
k <= (n-1)/a. - Количество реклам:
ads = (n - 1) // a.
План решения:
- Считай a, b, n.
- Переведи длительность урока в секунды:
lesson = n * 60. - Найди число рекламных вставок:
ads = (n - 1) // a. - Добавь их длительность:
total = lesson + ads * b. - Выведи total.
Сложность: O(1) по времени и памяти.
Частая ошибка: считать n // a реклам. Это неверно, когда n кратно a: после ровно n минут урок уже кончился, и реклама не должна включаться. Поэтому нужен именно (n - 1) // a.
Разберись руками
Урок идёт 25 минут. После каждых 10 полностью просмотренных минут плеер вставляет рекламу на 30 секунд, но если урок уже закончился — рекламы нет.
- Отметь минуты (от 1 до 25), ПОСЛЕ которых включится реклама. Правило: реклама после каждых 10 полностью просмотренных минут, но не после последней минуты урока.
- Сколько рекламных роликов получится всего?
- Теперь посчитай общее время в секундах: сам урок + вся реклама. (25 минут = 25×60 секунд, каждый ролик по 30 секунд.)
Идея: Сначала руками находишь, после каких полных «кусочков» по 10 минут реклама реально включится (и не включится после конца урока). Потом переводишь длительность урока в секунды и прибавляешь секунды всех найденных рекламных роликов.
Решить задачу с автопроверкой на Python →
Куда дальше
- С нуля до олимпиады: маршрут — сколько занимает язык, какие приёмы нужны и к какому этапу это ведёт
- Школьный этап ВсОШ по информатике — как устроен первый этап и план подготовки за четыре недели
- БВИ и льготы при поступлении — какой диплом что даёт и сколько лет он действует