16

Решение: Среднее по последней цифре

ОГЭ · Информатика · Задание 16 · Основы программирования
ПовышеннаяФИПИ0FCA49Развёрнутое решение≈ 10 минутРазбор в 5 шагов
Условие

Напишите программу, которая в последовательности натуральных десятичных чисел определяет среднее арифметическое элементов, запись которых в системе счисления с основанием 7 оканчивается нечётной цифрой. Если среди входных данных таких элементов нет, программа должна вывести «NO».

Программа получает на вход в первой строке натуральное число $N$ ($3 \le N \le 10\,000$), затем $N$ натуральных чисел, не превышающих 30\,000, каждое в отдельной строке.

Программа должна вывести одно число — среднее арифметическое десятичных чисел последовательности, запись которых в $7$-ричной системе счисления оканчивается нечётной цифрой, или «NO», если среди входных данных таких элементов нет.

Пример работы программы:
Входные данные: 6, 12, 15, 10, 71, 50, 11.
Выходные данные: 31.6.

Открыть задачу и решить самому
Дальше ответЕсли ещё решаете — начните с подсказок: они ведут к ответу, но не выдают его.
К подсказкам

Решение по шагам

5 шагов
1

Последняя цифра числа в системе счисления с основанием 7 определяется остатком от деления числа на 7.

$$d = x \bmod 7$$
2

Если остаток нечётный, число подходит: остатки 1, 3 и 5 соответствуют нечётным последним цифрам в семеричной записи.

$$x \bmod 7 \in \{1,3,5\}$$
3

Для подходящих чисел вычисляем сумму и количество, затем находим среднее арифметическое.

$$\overline{x} = \dfrac{S}{K}$$
4

Если подходящих чисел нет, счётчик равен нулю, поэтому выводим «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.

Используют деление / вместо остатка от деления %.

Забывают обработать случай отсутствия подходящих чисел и получают деление на ноль.

Выводят среднее арифметическое только целой частью.

Закрепить приёмВ теме «Основы программирования» ещё 153 задачи — с ответом и таким же разбором.
Тренироваться

Как решать задание 16 ОГЭ, информатика

Разбор этой задачи разложен на 5 шагов: видно, откуда берётся каждое число и где теряется балл. Ответ приведён рядом с выкладками, а не вместо них.

Задача из темы «Основы программирования»: в ней 154 задачи, и у каждой есть такой же разбор. Регистрация не нужна.