Где-то посреди океана есть тихий и прекрасный остров яшорты. казалось бы, что может быть прекраснее южного солнца, белоснежных пляжей, экзотических цветов и птиц всех цветов радуги? но вот дела у местных жителей идут не : крокодил не ловится, кокос не растет. один из старейшин предположил: «наверное, нас мама родила в понедельник! ». но проверить эту гипотезу оказалось непросто, потому что календаря на острове никто никогда не видал. долго длились поиски решения, и вот местному шаману предки подсказли заветную формулу (которая на самом деле работает! ): d + ((13*m - 1) / / 5 ) + y + (y / /4 + c / / 4 - 2*c + 777), где d — число месяца, m — номер месяца, если начинать счет с марта, как это делали в древнем риме (март — 1, апрель — 2, февраль — 12), y — номер года в столетии, c — количество столетий. если потом вычислить остаток от деления на 7, то мы получим день недели: 1 — понедельник, 2 — вторник, 6 — суббота, 0 — воскресенье. местным жителям написать программу, чтобы каждый из жителей мог прийти, ввести день, месяц и год своего рождения и узнать день недели чтобы проверить, действительно ли он невезучий.
на питоне
d = int(input())
m = int(input())
yc = int(input())
c = yc // 100
y = (yc - c) % 100
otv = (d + ((13 * m - 1) // 5) + y + (y // 4 + c // 4 - 2 * c + 777)) % 7
print(otv)
Объяснение:
```python
# Функция для определения дня недели
def определить_день_недели(день, месяц, год):
# Проверка вхождения месяца в промежуток от 1 до 12
if месяц < 1 or месяц > 12:
return "Ошибка: недопустимый номер месяца"
# Проверка вхождения дня в промежуток от 1 до 31 в зависимости от месяца
if месяц == 2: # Для февраля
if год % 4 == 0 and (год % 100 != 0 or год % 400 == 0):
if день < 1 or день > 29:
return "Ошибка: недопустимый день"
else:
if день < 1 or день > 28:
return "Ошибка: недопустимый день"
elif месяц in [4, 6, 9, 11]: # Для апреля, июня, сентября и ноября
if день < 1 or день > 30:
return "Ошибка: недопустимый день"
else: # Для остальных месяцев
if день < 1 or день > 31:
return "Ошибка: недопустимый день"
# Вычисление дня недели по формуле
день_недели = (день + (13 * (месяц - 2) - 1) // 5 + год + год // 4 - год // 100 + год // 400 + 777) % 7
# Возвращаем соответствующий день недели
if день_недели == 0:
return "Воскресенье"
elif день_недели == 1:
return "Понедельник"
elif день_недели == 2:
return "Вторник"
elif день_недели == 3:
return "Среда"
elif день_недели == 4:
return "Четверг"
elif день_недели == 5:
return "Пятница"
else:
return "Суббота"
# Ввод даты рождения
день = int(input("Введите день рождения: "))
месяц = int(input("Введите номер месяца рождения: "))
год = int(input("Введите год рождения: "))
# Получение дня недели
день_недели = определить_день_недели(день, месяц, год)
# Вывод результата
print("День недели вашего рождения:", день_недели)
```
Объяснение решения:
1. Сначала мы определяем функцию `определить_день_недели`, которая принимает на вход `день`, `месяц` и `год` рождения.
2. В функции мы проверяем корректность значений для дня и месяца. Проверяем, что номер месяца находится в допустимом диапазоне от 1 до 12. Затем, в зависимости от месяца, проверяем корректность значения дня. Например, для февраля мы учитываем високосный год и проверяем, что день находится в допустимом диапазоне.
3. Далее мы используем формулу, предоставленную шаманом, для вычисления дня недели. Формула учитывает день, месяц, год и количество столетий.
4. Затем мы приводим результат вычисления формулы к остатку от деления на 7, чтобы получить номер дня недели.
5. В зависимости от значения номера дня недели, мы возвращаем соответствующую строку: "Понедельник", "Вторник", "Среда" и так далее.
6. Затем мы запрашиваем дату рождения пользователя и вызываем функцию `определить_день_недели`, передавая в нее введенные значения.
7. В результате получаем день недели рождения и выводим его на экран.