Решение: Среднее по последней цифре
Напишите программу, которая в последовательности натуральных десятичных чисел определяет среднее арифметическое элементов, запись которых в системе счисления с основанием 7 оканчивается нечётной цифрой. Если среди входных данных таких элементов нет, программа должна вывести «NO».
Программа получает на вход натуральные десятичные числа, не превышающие 30 000, каждое в отдельной строке. Количество введённых чисел неизвестно, их последовательность заканчивается числом 0 (0 — признак окончания ввода, в последовательность не входит).
Программа должна вывести одно число — среднее арифметическое десятичных чисел, запись которых в системе счисления с основанием 7 оканчивается нечётной цифрой, или «NO», если среди входных данных таких элементов нет.
Пример работы программы:
Входные данные:
12
15
10
71
50
11
0
Выходные данные:
31.6
Решение по шагам
5 шаговПоследняя цифра записи натурального числа в системе счисления с основанием 7 определяется остатком от деления числа на 7.
$$last\_digit = n \bmod 7$$Если этот остаток нечётный, число учитывается при вычислении среднего арифметического.
$$n \bmod 7 \bmod 2 = 1$$Последовательно считываем числа до появления нуля, отдельно накапливая сумму подходящих чисел и их количество.
$$S = S + n,\quad k = k + 1$$После окончания ввода проверяем, были ли подходящие числа. При наличии таких чисел выводим среднее арифметическое, иначе выводим «NO».
$$\frac{S}{k},\quad k > 0$$Один из возможных вариантов программы:
s = 0
k = 0
while True:
n = int(input())
if n == 0:
break
if (n % 7) % 2 == 1:
s += n
k += 1
if k == 0:
print('NO')
else:
print(s / k)
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Проверяют нечётность самого числа, а не его последней цифры в системе счисления с основанием 7.
Включают завершающий ноль в сумму или количество чисел.
Забывают обработать случай, когда подходящих чисел нет.
Используют целочисленное деление вместо обычного деления при вычислении среднего арифметического.