Редакция для Високосный год
Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.
Submitting an official solution before solving the problem yourself is a bannable offence.
Автор:
1. Идея
Нужно проверить, является ли год y високосным по заданному правилу.
Правило состоит из двух частей:
- год високосный, если делится на
4, но не делится на100; - или если делится на
400.
Значит, задача сводится к одной логической проверке с остатками от деления.
2. Наблюдения
Разберём правило подробнее.
- Если год не делится на
4, он точно не високосный. - Если год делится на
4, то он может быть високосным. - Но годы, которые делятся на
100, обычно уже не считаются високосными. - Исключение: если год делится на
400, то он всё-таки високосный.
Примеры:
4делится на4, не делится на100→YES100делится на4и на100, но не делится на400→NO400делится на400→YES
Итоговое условие можно записать так:
(y % 4 == 0 and y % 100 != 0) or (y % 400 == 0)
3. Алгоритм
- Считать число
y. - Проверить условие:
- если
(y % 4 == 0 && y % 100 != 0) || (y % 400 == 0), вывестиYES; - иначе вывести
NO.
- если
4. Почему это работает
Алгоритм напрямую повторяет определение високосного года из условия.
Он считает год високосным в двух случаях:
- год делится на
4, но не делится на100; - год делится на
400.
Если ни одно из этих условий не выполняется, то по правилу из задачи год не является високосным.
Значит, программа всегда выводит правильный ответ.
5. Сложность
Выполняется несколько арифметических операций и одна логическая проверка.
- Время:
O(1) - Память:
O(1)
6. Код на C++17
#include <iostream>
using namespace std;
int main() {
long long y;
cin >> y;
if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)) {
cout << "YES\n";
} else {
cout << "NO\n";
}
return 0;
}
7. Код на Python 3
y = int(input())
if (y % 4 == 0 and y % 100 != 0) or (y % 400 == 0):
print("YES")
else:
print("NO")
Комментарии