B. Эффективный тайм-менеджмент
ограничение по времени на тест1 s.
ограничение по памяти на тест256 MB
вводstandard input
выводstandard output
Студент Василий очень любит все откладывать на последний момент. Ходят слухи, что даже условия этой задачи он писал за 10 минут до начала соревнования.
Василий знает, что домашнюю работу по предмету «Эффективный тайм-менеджмент» нужно отправить в s времени. У коллеги по курсу он узнал, что на выполнение данной работы потребуется ровно t времени.
Спасите Василия. Помогите ему определить, в какой момент времени p надо начать выполнять домашнее задание, чтобы оно было готово ровно в s.
Учтите, что по отношению ко дню сдачи, Василий может начать выполнения задания на день раньше.
Входные данные
В первой строке задано текущее время s в виде строки в формате «hh:mm». Во второй строке задано время t в формате «hh:mm». Входные данные содержат корректное время в 24-часовом формате, иными словами 00≤hh≤23, 00≤mm≤59.
Выходные данные
В единственной строке выведите время p — время, когда Василию необходимо начать выполнять домашнее задание, в формате аналогичном формату времени во входных данных.
Примеры
входные данные
05:50
05:44
выходные данные
00:06
входные данные
00:00
01:00
выходные данные
23:00
входные данные
00:01
00:00
выходные данные
00:01
Примечание
Не забывайте про ведущие нули!
Answers & Comments
Программа:
Python:
s, t = input(), input()
s_hour, s_minute = s[:2], s[3:]
t_hour, t_minute = t[:2], t[3:]
if int(s_hour) < 0 or int(t_hour) < 0 or int(s_hour) >= 24 or int(t_hour) >= 24:
print('Неверный ввод.')
exit()
elif int(s_minute) < 0 or int(t_minute) < 0 or int(s_minute) >= 60 or int(t_minute) >= 60:
print('Неверный ввод.')
exit()
else:
p_hour = str(int(s_hour) - int(t_hour))
p_minute = str(int(s_minute) - int(t_minute))
if len(p_hour) == 1: p_hour = '0' + p_hour
if len(p_minute) == 1: p_minute = '0' + p_minute
if int(p_minute) < 0:
p_hour = str(int(p_hour) - 1)
p_minute = str(60 + int(p_minute))
if int(p_hour) < 0: p_hour = str(24 + int(p_hour))
p = f'{p_hour}:{p_minute}'
print(p)
Объяснение:
В начале вводятся переменные s и t, необходимые по условию. Переменные s_hour и s_minute получают введённый час и введённое время соответственно, также работает и с t. Далее идут проверки на целосность введённых данных (что было введено реальное время). После проверок начинается основной код. Находим p_hour и p_minute, начинаем их анализировать. Добавляем нули перед числом, если в результате отнимания получилась одна цифра. Далее - ещё две проверки: если мы получили отрицательное число p_hour, то значит это предыдущий день и отсчёт надо начать сначала; если мы получили отрицательное чиссло p_minute, то отнимаем от p_hour один час и прибавляем к t_minute 60 мин (точнее, отнимаем от 60 мин текущее значение t_minute). В конце собираем время в переменную p и выводим её.
Результат:
00:01
00:00
00:01
00:00
01:00
23:00
05:50
05:44
00:06
12:30
14:50
21:40
24:10
20:15
Неверный ввод.