Пронумеруем все дни недели числами от 0 до 6. Пусть сейчас месяц x, в котором k дней. Возьмем произвольный день этого месяца d. Пусть он приходится на день недели w. Теперь посмотрим на месяц x+1 и рассмотрим день этого месяца d. Если в предыдущем месяце было k дней, причем остаток от деления числа k на 7 равен m, то день недели, на который приходится день d в месяце x+1, циклически сместится ровно на m позиций. Чтобы было проще понять, приведу пример. Пусть рассматривается день недели 4 (пятница) и 13 число августа. В августе 31 день, то есть смещение будет на 31%7=3 дня. В сентябре 13-е число будет уже приходиться не на пятницу, а на понедельник. Понедельник имеет индекс 0 - потому что циклически сместили индекс 4 на 3 позиции вправо (4->5->6->0). К чему я веду. Рассмотрим все месяцы в году и посмотрим на суммарные сдвиги дней недели после каждого месяца. Возьмем день d=13 января. Пусть он приходится на день недели w. Выпишем количество дней для каждого месяца. Январь - 31 (смещение 3) Февраль - 28(29) (смещение 0(1)) Март - 31 (смещение 3) Апрель - 30 (смещение 2) Май - 31 (смещение 3) Июнь - 30 (смещение 2) Июль - 31 (смещение 3) Август - 31 (смещение 3) Сентябрь - 30 (смещение 2) Октябрь - 31 (смещение 3) Ноябрь - 30 (смещение 2) Декабрь - 31 (смещение 3) Выпишем список дней недели в каждом месяце, на которые приходится число месяца d. Так как это числа от 0 до 6, надо брать по модулю 7 суммарный сдвиг. Для невисокосного года: Январь - w+0, Февраль - w+3, Март - w+3, Апрель - w+6, Май - w+1, Июнь - w+4, Июль - w+6, Август - w+2, Сентябрь - w+5, Октябрь - w+0, Ноябрь - w+3, Декабрь - w+5 Для високосного года будет так: Январь - w+0, Февраль - w+3, Март - w+4, Апрель - w+0, Май - w+2, Июнь - w+5, Июль - w+0, Август - w+3, Сентябрь - w+6, Октябрь - w+1, Ноябрь - w+4, Декабрь - w+6 В обоих случаях присутствуют все дни недели w+0, w+1,...,w+6. Это значит, что в течении года каждое число месяца (числа 30 и 31 не в счет, так как они присутствуют не во всех месяцах) успевает побывать на всех днях недели. Как следствие, 13 число хотя бы в одном из месяцев в году будет пятницей.
Теперь посмотрим на месяц x+1 и рассмотрим день этого месяца d. Если в предыдущем месяце было k дней, причем остаток от деления числа k на 7 равен m, то день недели, на который приходится день d в месяце x+1, циклически сместится ровно на m позиций.
Чтобы было проще понять, приведу пример. Пусть рассматривается день недели 4 (пятница) и 13 число августа. В августе 31 день, то есть смещение будет на 31%7=3 дня. В сентябре 13-е число будет уже приходиться не на пятницу, а на понедельник. Понедельник имеет индекс 0 - потому что циклически сместили индекс 4 на 3 позиции вправо (4->5->6->0).
К чему я веду. Рассмотрим все месяцы в году и посмотрим на суммарные сдвиги дней недели после каждого месяца.
Возьмем день d=13 января. Пусть он приходится на день недели w.
Выпишем количество дней для каждого месяца.
Январь - 31 (смещение 3)
Февраль - 28(29) (смещение 0(1))
Март - 31 (смещение 3)
Апрель - 30 (смещение 2)
Май - 31 (смещение 3)
Июнь - 30 (смещение 2)
Июль - 31 (смещение 3)
Август - 31 (смещение 3)
Сентябрь - 30 (смещение 2)
Октябрь - 31 (смещение 3)
Ноябрь - 30 (смещение 2)
Декабрь - 31 (смещение 3)
Выпишем список дней недели в каждом месяце, на которые приходится число месяца d. Так как это числа от 0 до 6, надо брать по модулю 7 суммарный сдвиг.
Для невисокосного года:
Январь - w+0,
Февраль - w+3,
Март - w+3,
Апрель - w+6,
Май - w+1,
Июнь - w+4,
Июль - w+6,
Август - w+2,
Сентябрь - w+5,
Октябрь - w+0,
Ноябрь - w+3,
Декабрь - w+5
Для високосного года будет так:
Январь - w+0,
Февраль - w+3,
Март - w+4,
Апрель - w+0,
Май - w+2,
Июнь - w+5,
Июль - w+0,
Август - w+3,
Сентябрь - w+6,
Октябрь - w+1,
Ноябрь - w+4,
Декабрь - w+6
В обоих случаях присутствуют все дни недели w+0, w+1,...,w+6. Это значит, что в течении года каждое число месяца (числа 30 и 31 не в счет, так как они присутствуют не во всех месяцах) успевает побывать на всех днях недели. Как следствие, 13 число хотя бы в одном из месяцев в году будет пятницей.