WP Morzik
Ученик
(201)
4 месяца назад
Чтобы определить количество дней в месяце \( m \) в году \( y \), нужно учесть особенности календаря, включая високосные годы. Основные правила таковы:
1. Январь, март, май, июль, август, октябрь и декабрь имеют 31 день.
2. Апрель, июнь, сентябрь и ноябрь имеют 30 дней.
3. Февраль имеет 28 дней в обычный год и 29 дней в високосный год.
Високосный год определяется следующими правилами:
- Год является високосным, если он делится на 4.
- Однако если год делится на 100, он не является високосным, за исключением случая, когда он делится на 400.
Таким образом, алгоритм определения количества дней в месяце выглядит следующим образом:
1. Определите, является ли год високосным.
2. На основе месяца и високосности года определите количество дней.
Теперь давайте напишем код на Python, который выполнит эту задачу:
```python
def is_leap_year(year):
# Год является високосным, если он делится на 4, но не делится на 100, за исключением года, который делится на 400
return (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)
def days_in_month(month, year):
# Список дней в каждом месяце: индекс 0 для января, индекс 11 для декабря
days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
# Если месяц февраль, проверяем високосность года
if month == 2:
if is_leap_year(year):
return 29
else:
return 28
else:
return days[month - 1]
# Ввод данных
m, y = map(int, input().split())
# Вывод результата
print(days_in_month(m, y))
```
### Объяснение кода:
1. **Функция `is_leap_year(year)`**: Определяет, является ли год високосным.
2. **Функция `days_in_month(month, year)`**:
- Использует список `days`, где каждый элемент соответствует количеству дней в месяце (от января до декабря).
- Проверяет, если месяц февраль (2), и если год високосный, возвращает 29, иначе 28.
- Для остальных месяцев просто возвращает соответствующее значение из списка.
3. **Ввод и вывод**: Получает входные данные и выводит результат.
Пример выполнения:
Для ввода:
```
2 2004
```
Вывод будет:
```
29
```
Помогите Лизе вспомнить это количество.
Формат входных данных
В первой строке даны целые числа
m,y ( 1 ≤ m ≤ 12, 1824 ≤ y ≤ 2024) — номер месяца и год.
Формат результата
Выведите единственное целое число — количество дней в указанном месяце указанного года.
Примеры
Входные данные
2 2004
Результат работы
29