Решение: Сумма чисел по остатку
Напишите программу, которая в последовательности натуральных десятичных чисел определяет сумму элементов, запись которых в системе счисления с основанием 7 оканчивается цифрой 3. Если среди входных данных таких элементов нет, программа должна вывести «NO».
Программа получает на вход в первой строке натуральное число $N$ ($3 \leq N \leq 10\,000$), затем $N$ натуральных чисел, не превышающих $30\,000$, каждое в отдельной строке.
Программа должна вывести одно число — сумму десятичных чисел последовательности, запись которых в 7-ричной системе счисления оканчивается цифрой 3, или «NO», если среди входных данных таких элементов нет.
Пример входных данных:
5
33
63
17
24
53
Пример выходных данных:
41
Решение по шагам
5 шаговПоследняя цифра записи натурального числа в системе счисления с основанием 7 определяется остатком от деления этого числа на 7. Поэтому подходят числа, для которых выполняется условие:
$$x \bmod 7 = 3$$Будем последовательно обрабатывать все $N$ чисел. Для подходящих чисел увеличиваем сумму и количество найденных элементов.
Если количество подходящих элементов равно нулю, выводим `NO`; иначе выводим накопленную сумму.
В приведённом примере подходят числа 17 и 24, поскольку $17 \bmod 7 = 3$ и $24 \bmod 7 = 3$. Их сумма равна:
$$17 + 24 = 41$$Один из вариантов программы на Python:
$$n = int(input()) s = 0 count = 0 for _ in range(n): x = int(input()) if x % 7 == 3: s += x count += 1 if count == 0: print('NO') else: print(s)$$Программа должна проверять остаток от деления каждого числа на 7, суммировать числа с остатком 3 и выводить `NO`, если таких чисел нет.
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Проверяют последнюю цифру десятичной записи вместо остатка от деления на 7.
Суммируют остатки от деления, а не исходные числа.
Выводят 0 вместо `NO`, если подходящих чисел нет.
Забывают обработать все $N$ входных чисел.