Скільки днів існує?#6854

Скільки днів існує?

1 секунда
64 мегабайти
Дуже складна

Вибач, але я не зможу прийти на вечірку 10-го числа цього місяця. Ти знаєш, що мої вихідні лише в четвер. Я дуже чекав на цю вечірку, але мушу відмовитися від участі.

Це не проблема. Сподіваюся, ти зможеш бути присутнім наступного разу.

Чи траплялися у вас подібні ситуації? Хоч би як ви про них шкодували, ви все одно нічого не могли зробити. Тому ми прагнемо знайти спосіб дізнатися, скільки днів у певному періоді відповідають нашим вимогам не лише за датою, але й за днем тижня.

У цій задачі ми розглядаємо спеціальний календар, що охоплює період від давніх до майбутніх часів. У цьому календарі встановлено наступне:

  1. Рік, що передує року н.е., є роком до н.е. За домовленістю, ми позначаємо рік до н.е. як , рік до н.е. як , і так далі.

  2. У тижні сім днів: понеділок, вівторок, середа, четвер, п'ятниця, субота та неділя. Вони повторюються в такому порядку. У календарі 1 січня 1 року н.е. є понеділком. День тижня іншої дати визначається відносно 1 січня 1 року н.е.

  3. Рік, що ділиться на , але не ділиться на , є високосним роком. Рік, що ділиться на , також є високосним роком. Це правило застосовується і до років до н.е. Наприклад, рік до н.е. є високосним роком, оскільки цей рік позначається як .

  4. Рік складається з дванадцяти місяців. У січні, березні, травні, липні, серпні, жовтні та грудні по дню кожен. У квітні, червні, вересні та листопаді по днів кожен. А в лютому днів, якщо рік високосний; днів в іншому випадку.

  5. Ваша програма повинна обробляти дати від року до н.е. до року н.е.

Вхідні дані

Вхідний файл для цієї задачі міститиме серію наборів даних. Кожен набір даних буде дано в рядку і починатиметься з двох цілих чисел. Перше ціле число (0 \le m \le 6) є днем тижня, що вимагається, де m = 0 представляє неділю, m = 1 представляє понеділок, m = 2 представляє вівторок і так далі. Друге ціле число (0 \le n \le 31) є частиною дати, що вимагається. Після цього буде шість цілих чисел, y_1, m_1, d_1, y_2, m_2, d_2. y_1, m_1 і d_1 є частинами року, місяця і дня початкової дати, а y_2, m_2 і d_2 є частинами року, місяця і дня кінцевої дати. Ви можете припустити, що початкова дата і кінцева дата відповідатимуть календарю. Кінцева дата не буде раніше початкової дати.

Кінець вводу позначається рядком, що містить два нулі. Цей рядок не слід обробляти.

Вихідні дані

Вихід для кожного набору даних повинен містити рядок, що містить ціле число, яке вказує, скільки днів відповідають нашим вимогам від початкової дати до кінцевої дати (включно з початковою і кінцевою датами). Тут ми кажемо, що дата відповідає нашим вимогам, якщо день тижня дати дорівнює і частина дати дорівнює . Ви не повинні друкувати більше пробілів або порожніх рядків у виході.

Приклади

Приклад 1

Loading
Loading