С Новым годом!

Задача

На какие дни недели чаще всего приходится 1 января?*


* Чтобы не перегружать эту задачу техническими трудностями, будем считать, что современный календарь начался 1 января 1 г. н.э. и будет существовать всегда.


Подсказка 1

Главное в задаче — правильно осознать смысл слов «чаще всего». Вас ведь не слишком удивляет, что в 2011 году можно было использовать календарик от 2005-го? Вот и подумайте... В невисокосном (обычном) году 365 дней — это 52 недели и еще 1 день. В високосном на 1 день больше.


Подсказка 2

На первый взгляд кажется, что в табличке «день недели — годы, которые с него начинаются» прослеживается цикл из 28 лет. Например, если табличку начать с 2001 года (который начинался с понедельника), то 2029-й год будет точно таким же — первым после високосного, начинающимся с понедельника...

Пн 2001 2007   2018 2024 2029
Вт 2002 2008 2013 2019   2030
Ср 2003   2014 2020 2025 2031
Чт 2004 2009 2015   2026 2032
Пт   2010 2016 2021 2027  
Сб 2005 2011   2022 2028 2033
Вс 2006 2012 2017 2023   2034

Всегда ли так будет? Не торопитесь с ответом. Кстати, а почему русская православная церковь отмечает рождество в январе, а католики — в декабре?


Решение

Повторим то, о чем говорилось во второй подсказке: в табличке «день недели — годы, которые с него начинаются» прослеживается цикл из 28 лет.

Стандартный цикл (на примере 2001–2028 гг.):

Пн 2001 2007   2018 2024
Вт 2002 2008 2013 2019  
Ср 2003   2014 2020 2025
Чт 2004 2009 2015   2026
Пт   2010 2016 2021 2027
Сб 2005 2011   2022 2028
Вс 2006 2012 2017 2023  

Таким образом, за 28 лет год начинается с каждого дня недели ровно по 4 раза. Казалось бы, так будет всегда, и значит, ответ на задачу — «все дни являются началом года одинаково часто»? Не торопитесь.

Дело в том, что наш календарь не так прост, как многим кажется: он не юлианский, а григорианский, и полный цикл високосных лет в нём состоит не из 4 лет, а из 400 (см. «Послесловие» об истории календаря и его реформ). В частности, 2100, 2200 и 2300 годы не будут високосными. Разберемся, как это влияет на решение задачи.

Цикл 2001–2028 повторится еще дважды: 2029–2056 и 2057–2084. А дальше нужно смотреть, что происходит на границе столетий, между которыми 7 невисокосных лет подряд.

Длинный цикл 2085–2124:

Пн 2085 2091   2103   2114 2120   5
Вт 2086 2092 2097 2104 2109 2115     6
Ср 2087   2098   2110 2116 2121   5
Чт 2088 2093 2099 2105 2111   2122   6
Пт   2094 2100 2106 2112 2117 2123   6
Сб 2089 2095 2101 2107   2118 2124   6
Вс 2090 2096 2102 2108 2113 2119     6

Здесь «цикл» удлиняется и составляет уже 2124 – 2084 = 40 лет, при этом так как 40 не делится на 7, то не все дни недели могут начинать год одинаково часто (см. правый столбец) — например, в приведенной табличке понедельник и среда встречаются на 1 раз меньше, чем остальные.

Затем снова идут стандартные циклы 2125–2152, 2153–2180, «длинный» цикл 2181–2220, стандартные циклы 2221–2248, 2249–2276, «длинный» цикл 2277–2316 и, наконец, три стандартных 2317–2344, 2345–2372, 2373–2400. То есть 2401-й год не просто начинает новое 400-летие григорианского календаря, но и начинается с того же дня недели (понедельника), что и 2001-й. А это означает, что для решения задачи нам достаточно сосчитать количество начал года по каждому дню недели ровно в одном 400-летнем цикле!

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

Длинный цикл 2181–2220:

Пн 2181 2187   2198   2210 2216   5
Вт 2182 2188 2193 2199 2205 2211     6
Ср 2183   2194 2200 2206 2212 2217   6
Чт 2184 2189 2195 2201 2207   2218   6
Пт   2190 2196 2202 2208 2213 2219   6
Сб 2185 2191   2203   2214 2220   5
Вс 2186 2192 2197 2204 2209 2215     6

Длинный цикл 2277–2316:

Пн 2277 2283   2294 2300 2306 2312   6
Вт 2278 2284 2289 2295 2301 2307     6
Ср 2279   2290 2296 2302 2308 2313   6
Чт 2280 2285 2291   2303   2314   5
Пт   2286 2292 2297 2304 2309 2315   6
Сб 2281 2287   2298   2310 2316   5
Вс 2282 2288 2293 2299 2305 2311     6

Всего в трех «длинных» циклах год начинается с понедельника и субботы по 16 раз, со среды и четверга — по 17, а со вторника, пятницы и воскресенья — по 18 раз. В десяти стандартных циклах каждый день недели служит началом года по 40 раз. Всего же получается по 56 понедельников и суббот, по 57 четвергов и сред, по 58 вторников, пятниц и воскресений

Таким образом, правильный ответ на задачу — вторниками, пятницами, и воскресеньями. Кстати, 2012 год как раз начнется с воскресенья. С наступающим вас Новым годом! Счастья, радости и многих успешно решенных задач!!


Послесловие

Как ни странно, почти никто не знает истории современного календаря и не задумывается над тем, как он устроен. Это не голословное утверждение: многие из читателей наверняка помнят «вторую ошибку 2000 года» — не ту, из-за которой приходилось переписывать горы старого программного обеспечения, а ту, когда во всех газетах и по всем телеканалам трубили, что 1999 год завершает двадцатый век, а 2000-й — открывает новое тысячелетие.

Кстати, самым остроумным (и точным!) ответом на это распространенное заблуждение был такой: «Второй ящик водки начинается с 21-й бутылки, а не с 20-й».

Что-то я отвлекся от темы. Впрочем, отвлекусь еще раз — расскажу о том, как создавался наш календарь. (Когда-то я уже очень подробно писал об этом в журнале «Компьютерра» в далеком 1998 году.)

Мы ведем отсчет лет «нашей эры» от рождества Христова, однако во времена Христа, естественно, летосчисление было другим. Тогда годы отсчитывались «от основания Рима», а позже римляне и подчиненные им провинции перешли на «эру Диоклетиана». Первым, кто предложил перейти к отсчету от рождества Христова (от р. Х.), был александрийский астроном и монах Дионисий Малый. Было это в VI веке н. э. При этом основной заслугой Дионисия была разработка удобных алгоритмов для расчета пасхалий (а с ними — и всего годичного круга церковных праздников).

С хронологией Дионисия согласились далеко не все и далеко не сразу, но так или иначе к середине XV века римская церковь безоговорочно приняла счет лет от р. Х., и церковные праздники оказались очень прочно связанными с солнечным и лунным календарями. И вот тут вскрылись проблемы... Главная из них заключалась в том, что день весеннего равноденствия — 21 марта — был сочтен неподвижной границей для празднования Пасхи на все времена. При этом сам календарь, предложенный еще во времена Юлия Цезаря (каждый четвертый год — високосный, то есть средняя продолжительность года принята равной 365,25 дней) был немного длиннее реального солнечного, поэтому момент весеннего равноденствия в нём просто не мог быть неподвижным! Благодаря этому в историю календаря вошел римский папа Григорий XIII.

Длина тропического года — времени обращения Земли вокруг Солнца — примерно 365,2422 суток. Следовательно, юлианский календарь каждый год накапливает ошибку примерно в 0,0078 суток, а ошибка в целые сутки набегает за 128 лет. За века, прошедшие с введения юлианского календаря до 1582 года, точка весеннего равноденствия «убежала» с 21 марта на 11 марта. Поэтому папа Григорий XIII в феврале 1582 года издал специальную буллу о календарной реформе. Эта булла предписывала изъять из календаря 1582 года все дни от 5 октября до 14 октября включительно (так что следующим днем после четверга 4 октября стала пятница 15 октября), а впредь исправить календарную систему так, чтобы из каждых 400 лет было не 100 високосных, а всего 97. Этот календарь получил название григорианского и сохранился по сей день.

В соответствии с волей папы Григория годы 1700-й, 1800-й и 1900-й были невисокосными и состояли из 365 дней. 2000-й год, как мы помним, был високосным, а за ним снова последуют три невисокосных — 2100-й, 2200-й и 2300-й. Такой календарь тоже небезупречен: ведь 97/400 тоже не равны дробной части тропического солнечного года. Но, в отличие от прежнего календаря, ошибка в сутки теперь накапливается не за 128, а за 3250 лет. Иными словами, на наш век точности этого календаря вполне хватит.

В России же всё происходило с изрядным опозданием. Христианское летосчисление и январское новолетие было введено только в конце 1699 года указом Петра I, по которому («лучшего ради согласия с народами европейскими в контрактах и трактатах») год, начинавшийся после 31 декабря 7208 года от сотворения мира, стал считаться 1700 годом от Рождества Христова. Тем не менее юлианский календарь в России сохранялся вплоть до Октябрьской революции. Григорианский календарь был введен в России в 1918 году декретом Совнаркома, согласно которому в 1918 году после 31 января следовало 14 февраля. Именно поэтому разница между юлианским счетом дней («старым стилем») и григорианским («новым стилем») у нас составляет не 10 дней, как было во времена папы Григория, а целых 13.

Впрочем, даже если бы григорианский календарь был образцом точности в момент своего создания, он не смог бы им оставаться навсегда, потому что сама продолжительность года немного меняется. Принято считать, что вращение Земли вокруг своей оси постепенно замедляется, а продолжительность суток — увеличивается. Соответственно уменьшается число суток, укладывающихся в одном году. Этот эффект задается приближенной формулой Ньюкома:

1 год = 365,24219879 – 0,0000000614 × (№ года — 1900).

В частности, григорианский календарь был бы совсем точным примерно 5000 лет назад, а с каждым годом его погрешность чуть-чуть растет... Но это уже тема для задачи по астрономии...


8
Показать комментарии (8)
Свернуть комментарии (8)

  • terus  | 30.12.2011 | 00:40 Ответить
    В послесловии тропический год (365,2422 суток) определяется как время обращения Земли вокруг Солнца — это не верно, период обращения или Сидери́ческий (звездный) год составляет 365,2564 дней (в этом смысле Юлианский календарь получается более точным, чем Григорианский), Тропическим же или солнечным годом называют промежуток между двумя последовательными положениями солнцестояния или равноденствия, т.е. цикл смены времён года, он примерно на 20 минут короче звездного года, что связано с прецессией земной оси, в результате чего очередной момент солнцестояния наступает чуть раньше, чем Земля успевает сделать полный оборот вокруг Солнца, и точка, где это происходит всякий раз смещается вдоль земной орбиты примерно на 50 угловых секунд. Именно с этим связано введение Григорианского календаря, поскольку для людей важнее ориентация Земли относительно Солнца, а не ее положение на орбите и ориентация относительно остальных звезд.
    Ответить
  • Angl  | 30.12.2011 | 13:13 Ответить
    Кстати говоря, если экстраполировать григорианский календарь в прошлое, то в 1 году AD (нашей эры) они практически сойдутся (1 января 1 года AD приходится по григорианскому календарю на понедельник, а по юлианскому - на субботу, согласно http://ru.wikipedia.org/wiki/1). То есть разница составляет 2 дня. Таким образом, Христос родился (условно принято) 25 декабря 1 года BC (до нашей эры) по юлианскому календарю или 23 (!) декабря по тогдашнему григорианскому (если бы он тогда был).
    Ответить
  • gthnjdbx  | 03.01.2012 | 21:30 Ответить
    за 400 лет Григорианского календаря будет не 100 високосных годов как в Юлианском календае, а 97. Обычный, не високосный, год 365 дней сдвигает 1 января на 1 день вперед по неделе, а високосный на 2. Всего за 400 Григорианских лет будет сдвижка на 400+97*2=594 дней вперед по неделе. 594:7 нацело дает в остатке 6, значит за 400 лет будет сдвижка назад по неделе на 1 день, поэтому за 2800 григорианских лет 1 января будет одинаковое количество раз каждым днем недели.
    Ответить
    • Geen > gthnjdbx | 05.01.2012 | 15:59 Ответить
      Сдвижка будет 400+97 (без всякого умножения на два) = (400-97)*1 + 97*2
      Ответить
      • gthnjdbx > Geen | 05.01.2012 | 21:41 Ответить
        согласен. Спасибо за уточнение. 497 делится на 7 без остатка. и мой вывод о равенстве частоты дней недели 1 января не верен. Спасибо.
        Ответить
  • Alex.L  | 04.01.2012 | 02:16 Ответить
    Согласен с предыдущим постом. А автору за решение - незачет (рассмотрел только 300 с лишним лет).
    Ответить
  • Dmitry  | 08.01.2012 | 03:15 Ответить
    Извините, но вопрос сформулирован не корректно (на зимние), т.к. задача математическая, то скорее всего имелись ввиду дни недели (не календарные, а астрономические), в этом случае на какой период имелся ввиду, есть прецессия, есть замедления вращения планеты, весь вопрос в том какая нужна точность конечного результата.
    Ответить
  • Odomontois  | 22.02.2012 | 00:46 Ответить
    #всё проще
    >>> Counter(date(year,1,1).isoweekday() for year in range(1,401))
    Counter({2: 58, 5: 58, 7: 58, 3: 57, 4: 57, 1: 56, 6: 56})
    Ответить
Написать комментарий
Элементы

© 2005–2025 «Элементы»