Компьютерный год

Опубликовано: 19 Сентября, 2022

Вам дано, что 1 января 2001 года был понедельник. Давайте назовем год гиком, если 1 января этого года выпадает на воскресенье. Там будет дано два года « а » и « б ». Задача — найти нет. гиковских лет между этими двумя годами (включая «а» и «б»)

Примеры:

Input: a = 2001, b = 2013
Output: 2

Input: a = 2020, b = 2024
Output: 1

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

  • Инициализируйте переменную count как 0 .
  • Переберите диапазон [a, b], используя переменную i , и выполните следующие задачи:
    • Инициализируйте переменную y как i-1.
    • Инициализируйте переменную ans как (y + y/4 – y/100 + y/400) % 7.
    • Если ans равно 6 , увеличьте значение count на 1.
  • После выполнения вышеуказанных шагов выведите значение count в качестве ответа.

Ниже приведена реализация описанного выше подхода.


Временная сложность: O(N)
Вспомогательное пространство: O(1)