Решение: Подсчёт чётких цифр в пятеричной записи
Напишите программу, которая в последовательности натуральных десятичных чисел определяет количество элементов, запись которых в системе счисления с основанием 5 оканчивается чётной цифрой. Если среди входных данных таких элементов нет, программа должна вывести «NO».
Программа получает на вход в первой строке натуральное число $N$ ($3 \leq N \leq 10\,000$), затем $N$ натуральных чисел, не превышающих $30\,000$, каждое в отдельной строке.
Программа должна вывести одно число — количество десятичных чисел последовательности, запись которых в $5$-ричной системе счисления оканчивается чётной цифрой, или «NO», если среди входных данных таких элементов нет.
Пример входных данных:
6
12
15
10
71
50
11
Пример выходных данных:
4
Решение по шагам
4 шагаПоследняя цифра записи натурального числа в системе счисления с основанием $5$ определяется остатком от деления числа на $5.
$$last_digit_5(x) = x \bmod 5$$В пятеричной системе возможны цифры $0$, $1$, $2$, $3$, $4$. Чётными являются цифры $0$, $2$ и $4$, поэтому проверяем остаток `x % 5` на принадлежность множеству `(0, 2, 4)`.
Последовательно обрабатываем все $N$ чисел и увеличиваем счётчик подходящих элементов.
Если счётчик равен нулю, выводим `NO`; иначе выводим его значение.
$$count = 0 \Rightarrow \text{вывести NO}$$```python
n = int(input())
count = 0
for _ in range(n):
x = int(input())
if x % 5 in (0, 2, 4):
count += 1
if count == 0:
print("NO")
else:
print(count)
```
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Проверяют чётность самого десятичного числа, а не последней цифры его записи в системе счисления с основанием $5$.
Забывают, что остаток $0$ соответствует последней цифре $0$, которая является чётной.
Выводят $0$ вместо строки `NO`, если подходящих элементов нет.
Пытаются полностью переводить каждое число в пятеричную систему, хотя достаточно найти остаток от деления на $5$.