Решение: Сумма чисел по последней цифре
Напишите программу, которая в последовательности натуральных десятичных чисел определяет сумму элементов, запись которых в системе счисления с основанием 5 оканчивается чётной цифрой. Если среди входных данных таких элементов нет, программа должна вывести «NO».
На вход программе подаются натуральные десятичные числа, не превышающие 30 000, каждое в отдельной строке. Количество введённых чисел неизвестно. Последовательность заканчивается числом 0, которое в последовательность не входит.
Программа должна вывести сумму десятичных чисел, запись которых в системе счисления с основанием 5 оканчивается чётной цифрой, или «NO», если таких чисел нет.
| Входные данные | Выходные данные |
|---|---|
| 12 15 10 71 50 11 0 | 87 |
Решение по шагам
4 шагаПоследняя цифра записи натурального числа в системе счисления с основанием 5 определяется остатком от деления этого числа на 5.
$$d = n \bmod 5$$В системе счисления с основанием 5 цифры имеют значения от 0 до 4. Чётными являются цифры 0, 2 и 4, поэтому подходят числа, для которых остаток от деления на 5 равен 0, 2 или 4.
$$n \bmod 5 \in \{0, 2, 4\}$$Организуем цикл чтения чисел до появления нуля. Подходящие числа прибавляем к сумме, а наличие хотя бы одного такого числа фиксируем логической переменной.
$$S = S + n$$Если подходящих чисел не встретилось, выводим «NO», иначе выводим накопленную сумму.
n = int(input())
s = 0
found = False
while n != 0:
if n % 5 in (0, 2, 4):
s += n
found = True
n = int(input())
if found:
print(s)
else:
print('NO')
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Проверяют чётность самого числа, а не последней цифры его записи в системе счисления с основанием 5.
Учитывают только остаток 0 и забывают, что чётными цифрами в системе с основанием 5 также являются 2 и 4.
Включают завершающий ноль в сумму.
Выводят 0 вместо «NO», если подходящих элементов нет.