e-olymp 2364. Часы

Задача

Ослик Иа-Иа и часы

Ослик Иа-Иа и часы

На очередной день рождения ослику Иа-Иа подарили наручные стрелочные часы. Теперь у него появилось новое развлечение — смотреть на бег стрелок. На то, как минутная догоняет часовую, обходит и тут же продолжает бежать за ней. Вот и в этот раз Кенга застала ослика за этим занятием. Она присоединилась к наблюдением и через некоторое время ей стало интересно, сколько уже моментов, когда минутная стрелка обгоняет часовую, видел Иа-Иа. Для этого она спросила у ослика во сколько он начал смотреть на часы, записала это и текущее время и побежала к Сове с этим вопросом. Но Сова оказалось очень занята и поэтому попросила вас помочь. Как известно, за один день часовая стрелка делает два оборота, а минутная целых [latex]24[/latex].

Входные данные

Первая строка входного файла содержит описание момента времени, в который Иа-Иа начал смотреть на часы в формате [latex]HH:MM[/latex] — две первых цифры обозначают часы, потом через двоеточие две цифры минут.
Вторая строка входного файла содержит описание конечного момента времени в таком же формате.
Известно, что Иа-Иа наблюдал за часами менее суток, но вполне мог это делать и в полночь.

Выходные данные

В выходной файл выведите единственное целое число — количество моментов, когда минутная стрелка обгоняет часовую в процессе наблюдения.
Если такое событие происходило когда Иа-Иа начал или закончил смотреть на часы, то оно также считается.

Тесты

Входные данные Выходные данные
[latex]23:50[/latex] [latex]1[/latex]
[latex]00:20[/latex]
[latex]12:00[/latex] [latex]2[/latex]
[latex]13:20[/latex]
[latex]00:00[/latex] [latex]1[/latex]
[latex]00:01[/latex]
[latex]00:00[/latex] [latex]22[/latex]
[latex]23:59[/latex]
[latex]18:32[/latex] [latex]3[/latex]
[latex]20:44[/latex]
[latex]00:00[/latex] [latex]12[/latex]
[latex]12:01[/latex]

Код программы

Решение задачи

Сначала найдем количество минут в момент времени, в который Иа-Иа начал смотреть на часы и в момент времени, в который закончил ([latex]firstTimeInMinutes[/latex] и [latex]secondTimeInMinutes[/latex] соответсвенно). Теперь найдем разницу между этими моментами ([latex]differenceOfTimes[/latex]), учитывая переход через момент времени [latex]00:00[/latex] по формуле: $\left(1440+secondTimeInMinutes-firstTimeInMinutes\right)\mod 1440$ ([latex]1440[/latex] — это количество минут в сутках). Присвоим моменту времени, когда Иа-Иа закончил смотреть, сумму «начала» и «разности моментов» (т. е [latex]firstTimeInMinutes+differenceOfTimes[/latex]). В сутках есть два момента, когда минутная и часовая стрелки точно совпадают-это [latex]00:00[/latex] и [latex]12:00[/latex]. Если время начала совпало с одним из этих моментов, то его не надо учитывать. Заведем переменную [latex]r[/latex], которая будет принимать значение [latex]1[/latex] в этих моментах времени, а иначе какое-то другое значение (нам оно не важно). Это можно сделать, например, так: $h_1\mod 12 + m_1 + 1$. Период встречи стрелок равен [latex]\frac{720}{11}[/latex]. Посчитаем количество встреч стрелок ([latex]numberOfMeetings2[/latex]) от начала суток до [latex]secondTimeInMinutes[/latex] : [latex]\frac{secondTimeInMinutes\cdot 11}{720}+1[/latex] (добавляем [latex]1[/latex] т. к момент [latex]00:00[/latex] тоже надо учитывать). Также посчитаем количество встреч стрелок ([latex]numberOfMeetings1[/latex]) от начала суток до [latex]firstTimeInMinutes[/latex]: [latex]\frac{firstTimeInMinutes\cdot 11}{720}+ \lceil\frac{(r-1)}{r}\rceil[/latex] ([latex] \lceil\frac{(r-1)}{r}\rceil[/latex] дает [latex]0[/latex] при совпадении начального времени с моментом [latex]00:00[/latex] или [latex]12:00[/latex], а иначе — [latex]1[/latex]). Ответом будет разность этих двух количеств ([latex]numberOfMeetings2-numberOfMeetings1[/latex]).

Ссылки

Условие задачи на e-olymp
Код решения

2 thoughts on “e-olymp 2364. Часы

    • Массивы не используются при решении. Я использовал их исключительно ради удобства ввода.

Добавить комментарий для Костя Григорян Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *