Деление с остатком и разница во времени

Problem #12

Tags: practical modulo c-1 c-0 implementation

Who solved this?

Back to English version

Работа с остатками может причинять изрядную головную боль начинающим программистам. Напишем небольшую программу чтобы получше изучить целочисленное деление. В то же время мы попрактикуемся в операциях с временными промежутками (которые могут причинять головную боль даже опытным разработчикам).

В арифметике остаток это число "остающееся" после осуществления деления двух целых чисел, если они не делятся нацело. Например 7 при целочисленном делении на 3 даёт частное 2 и остаток 1.

Теперь представим что у нас есть два момента времени (две "временные метки") - например, когда паром отправляется и когда прибывает. Они могут выглядеть как-то так:

отправление: 3 Мая 17:08:30
прибытие:    8 Мая 12:54:15

и мы хотим узнать, сколько времени (в днях, часах, минутах и секундах) уходит на путешествие (например чтобы выбрать наиболее быстрый вариант). Как этого достичь?

Один из самых простых способов:

Первая операция осуществляется умножением минут на 60, часов на 60*60 и т.п. с последующим сложением всех получившихся значений.
Последняя же операция наоборот осуществляется последовательным делением и запоминанием остатков.

В этой задаче нам даны несколько пар временных меток. Допустим что обе даты в каждой паре принадлежат одному месяцу, так что задаётся только день месяца. Требуется вычислить разность между метками каждой пары.

Входные данные - в первой строке указано количество тестов, а в остальных идут сами тесты, по одному в каждой.
Каждый тест состоит из 8 чисел, по 4 для каждой из двух меток: день1 час1 мин1 сек1 день2 час2 мин2 сек2 (вторая метка всегда будет позже первой по времени).
Ответ для каждого теста должен содержать разность в виде (days hours minutes seconds) - обратите внимание на скобки - с пробелами между результатами.

Пример:

входные данные:
3
1 0 0 0 2 3 4 5
5 3 23 22 24 4 20 45
8 4 6 47 9 11 51 13

ответ:
(1 3 4 5) (19 0 57 23) (1 7 44 26)
You need to login to get test data and submit solution.