Дни между датами

Просмотр в формате PDF

Submit solution


Очки: 160
Ограничение по времени: 2.0s
Ограничение по памяти: 256M

Автор:
Problem type
Allowed languages
C++, Python

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

Год считается високосным, если он делится на 4, но не делится на 100, либо если он делится на 400. В високосном году 366 дней, в обычном — 365. Длины месяцев равны 31, 28 или 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31.

Поступает q запросов. В каждом запросе заданы две корректные даты отчётного периода d1 и d2. Для каждой пары нужно вычислить количество полных календарных дней между ними.

Если d1 == d2, ответ равен 0. Если d2 раньше d1, ответ должен быть отрицательным. Иначе ответ положителен.

Иными словами, для каждого запроса требуется найти разность d2 - d1, измеренную в днях.

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

В первой строке задано целое число q — количество запросов.

В каждой из следующих q строк записаны две даты в формате YYYY-MM-DD YYYY-MM-DD, разделённые пробелом.

Гарантируется, что обе даты корректны и принадлежат григорианскому календарю.

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

Для каждого запроса выведите в отдельной строке одно целое число — разницу d2 - d1 в днях.

Ограничения

  • 1 <= q <= 10^5
  • 1900 <= YYYY <= 2100

Примеры

Пример 1

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

8
1900-01-01 1900-01-01
1900-01-01 1900-01-02
1900-01-02 1900-01-01
2000-02-28 2000-02-29
2000-02-29 2000-03-01
1900-02-28 1900-03-01
1999-12-31 2000-01-01
2001-03-01 2001-02-28

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

0
1
-1
1
1
1
1
-1
Пример 2

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

10
2000-02-29 2000-02-29
2000-02-28 2000-03-01
2100-02-28 2100-03-01
1904-02-29 1905-02-28
1996-02-29 1997-03-01
2000-03-01 2000-02-28
2099-12-31 2100-01-01
1900-12-31 1901-01-01
2004-02-29 2004-03-01
2004-03-01 2004-02-29

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

0
2
1
365
366
-2
1
1
1
-1

Комментарии

Еще нет ни одного комментария.