Решение: Сумма чисел с цифрой 6
Напишите программу, которая в последовательности натуральных десятичных чисел определяет сумму элементов, запись которых в системе счисления с основанием 7 оканчивается цифрой 6. Если среди входных данных таких элементов нет, программа должна вывести «NO».
Программа получает на вход натуральные десятичные числа, не превышающие 30 000, каждое в отдельной строке. Количество введённых чисел неизвестно, их последовательность заканчивается числом 0 (0 — признак окончания ввода, в последовательность не входит).
Программа должна вывести одно число — сумму десятичных чисел, запись которых в 7-ричной системе счисления оканчивается цифрой 6, или «NO», если среди входных данных таких элементов нет.
Пример работы программы:
Входные данные: 20, 13, 9, 28, 12, 0.
Выходные данные: 33.
Решение по шагам
4 шагаСчитываем числа по одному, пока не встретится 0. Сам 0 не обрабатываем.
$$while n \ne 0$$Последняя цифра записи натурального числа в системе счисления с основанием 7 определяется остатком от деления на 7. Поэтому число подходит, если остаток равен 6.
$$n \bmod 7 = 6$$Для всех подходящих чисел накапливаем сумму и считаем их количество. Если количество равно нулю, выводим «NO», иначе выводим сумму.
$$S = \sum n$$Пример: $20 \bmod 7 = 6$ и $13 \bmod 7 = 6$, поэтому сумма равна $20 + 13 = 33$.
Пример решения на Python:
s = 0
count = 0
n = int(input())
while n != 0:
if n % 7 == 6:
s += n
count += 1
n = int(input())
if count == 0:
print('NO')
else:
print(s)
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Проверяют делимость числа на 7 вместо проверки остатка 6.
Добавляют в сумму число 0, хотя оно является признаком окончания ввода.
Выводят 0 вместо «NO», если подходящих чисел нет.
Забывают считать количество подходящих элементов и не могут отличить пустую выборку от суммы, равной нулю.