Вам нужно только сравнить день недели, в который попадает первый день года, и сравнить високосные и не високосные годы отдельно (они, очевидно, будут различаться).Если первый день совпадает, а дни в году совпадают, значит, весь год будет одинаковым.
При таком сокращении нам необходимо сначала узнать, что такое високосный год.Из википедии , алгоритм выглядит так:
if year modulo 400 is 0
then is_leap_year
else if year modulo 100 is 0
then not_leap_year
else if year modulo 4 is 0
then is_leap_year
else
not_leap_year
Тогда нам нужно вычислить первый день года.Прежде чем мы начнем, нам нужно заземление.Давайте возьмем 2000, который начинается в субботу.Каждый год мы продвигаемся вперед, мы продвигаемся вперед на один день в неделю, за исключением случаев, когда год следует за високосным годом, и в этом случае мы движемся вперед на два дня.
Давайте рассмотрим пример.2000 начинается в субботу.2001 год начинается в понедельник, 2 дня спустя, потому что 2000 год високосный.2002 начинается во вторник.2003 в среду.2004 в четверг.2005 в субботу, потому что 2004 год високосный.Из этого мы видим, что 2000 и 2005 годы начинаются в один и тот же день недели, но один - високосный, а другой - нет.Если мы продолжим, мы обнаружим, что 2011 год начинается в субботу, и, следовательно, он идентичен 2005 году.
Мы можем работать в обратном направлении, чтобы найти годы в прошлом, или мы можем просто выбрать более ранний начальный год.