Задача сформулирована неясно: «Как определить этот день» без конкретной даты. Если ваша цель — узнать, как определить день недели по дате, ниже есть подробные пошаговые методики. Пришлите конкретную дату (число, месяц, год), и я посчитаю для неё день недели.
Методы определения дня недели по дате
Метод 1. Движок «Doomsday» (быстрый 설명 и понятный для школьной программы)
- Определяем календарь: год — это високосный год по Грегорианскому календарю?
- Високосные годы: делятся на 4, но не делятся на 100, кроме случаев деления на 400.
- Найдите «anchor day» для века:
- 1800-х: пятница
- 1900-х: среда
- 2000-х: вторник
- 2100-х: воскресенье (Обычно в примерах берут 2000-е как базу: вторник) Мы используем числовую последовательность: 0 = воскресенье, 1 = понедельник, ..., 6 = суббота. Тогда anchor для 2000-х = 2.
- Вычислите код года YY (последние две цифры года Y):
- a = floor(YY / 12)
- b = YY mod 12
- c = floor(b / 4)
- year_code = (a + b + c) mod 7
- Дни недели года: doomsday = (anchor + year_code) mod 7.
- Найдите простой «Doomsday» для данного года — даты, чьи дни недели совпадают с doomsday:
- В марте в високосном году Doomsday: 3/14
- Другие постоянные даты Doomsday: 4/4, 6/6, 8/8, 10/10, 12/12; и вариации 5/9–9/5, 7/11–11/7.
- В январе-феврале: для високосного года — 1/4 и 2/29; для обычного — 1/3 и 2/28.
- Теперь для заданной даты найдите разницу в днях между ней и ближайшей датой Doomsday той же годовой парой месяцев, и добавьте/вычтите её к doomsday, чтобы узнать день недели. Пример:
- Дата: 2024-03-11
- Год 2024 — високосный. anchor для 2000-х = 2 (вторник).
- YY = 24: a=2, b=0, c=0 → year_code = 2. doomsday = (2+2) mod 7 = 4 → Thursday.
- В марте в високосный год Doomsday = 3/14 (четверг).
- 3/11 на 3 дня раньше 3/14 → 3/11 — понедельник. Ответ: 11 марта 2024 года — понедельник.
Метод 2. Zeller’s congruence (классическая формула)
- Если месяц январь или февраль, переносим их на месяц 13 и 14 соответствующего предыдущего года:
- январь → месяц = 13, год = год − 1
- февраль → месяц = 14, год = год − 1
- Обозначим:
- q = день месяца
- m = месяц (после коррекции)
- K = год в веке = год % 100
- J = век года = floor(год / 100)
- Вычислите h по формуле: h = (q + floor(13(m + 1) / 5) + K + floor(K / 4) + floor(J / 4) + 5J) mod 7
- Интерпретация результата (для стандартной нумерации, где 0 = суббота, 1 = воскресенье, 2 = понедельник, ...):
- h = 0 → суббота
- h = 1 → воскресенье
- h = 2 → понедельник
- h = 3 → вторник
- h = 4 → среда
- h = 5 → четверг
- h = 6 → пятница Чтобы перевести в более привычную схему (0 = воскресенье): добавьте 1 и возьмите по модулю 7. Пример:
- Дата: 2024-03-11
- q = 11, m = 3, K = 24, J = 20
- floor(13(m+1)/5) = floor(13*4/5) = 10
- h = (11 + 10 + 24 + floor(24/4) + floor(20/4) + 5*20) mod 7
- h = (11 + 10 + 24 + 6 + 5 + 100) mod 7 = 156 mod 7 = 2
- h = 2 → понедельник (как и в обычной календарной записи) Итого: 11 марта 2024 года — понедельник.
Что дальше
- Пришлите конкретную дату (число, месяц, год), и я скажу точный день недели именно для неё, используя любой из выбранных вами методов или оба метода для проверки. Если нужно, могу также объяснить, почему и как работают эти методы более детально или адаптировать объяснение под ваш школьный уровень.