Решение: Среднее по последней цифре
Напишите программу, которая в последовательности натуральных десятичных чисел определяет среднее арифметическое элементов, запись которых в системе счисления с основанием 7 оканчивается нечётной цифрой. Если среди входных данных таких элементов нет, программа должна вывести «NO».
Программа получает на вход в первой строке натуральное число $N$ ($3 \le N \le 10\,000$), затем $N$ натуральных чисел, не превышающих 30\,000, каждое в отдельной строке.
Программа должна вывести одно число — среднее арифметическое десятичных чисел последовательности, запись которых в $7$-ричной системе счисления оканчивается нечётной цифрой, или «NO», если среди входных данных таких элементов нет.
Пример работы программы:
Входные данные: 6, 12, 15, 10, 71, 50, 11.
Выходные данные: 31.6.
Решение по шагам
5 шаговПоследняя цифра числа в системе счисления с основанием 7 определяется остатком от деления числа на 7.
$$d = x \bmod 7$$Если остаток нечётный, число подходит: остатки 1, 3 и 5 соответствуют нечётным последним цифрам в семеричной записи.
$$x \bmod 7 \in \{1,3,5\}$$Для подходящих чисел вычисляем сумму и количество, затем находим среднее арифметическое.
$$\overline{x} = \dfrac{S}{K}$$Если подходящих чисел нет, счётчик равен нулю, поэтому выводим «NO», чтобы не выполнять деление на ноль.
Программа на Python:
$$n = int(input()) s = 0 k = 0 for _ in range(n): x = int(input()) if x % 7 % 2 == 1: s += x k += 1 if k == 0: print('NO') else: print(s / k)$$n = int(input())
s = 0
k = 0
for _ in range(n):
x = int(input())
if x % 7 % 2 == 1:
s += x
k += 1
if k == 0:
print('NO')
else:
print(s / k)
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Проверяют нечётность самого числа, а не последней цифры его записи в системе счисления с основанием 7.
Используют деление / вместо остатка от деления %.
Забывают обработать случай отсутствия подходящих чисел и получают деление на ноль.
Выводят среднее арифметическое только целой частью.