РУҚА
16

Решение: Среднее чисел в системе 7

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

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

Программа получает на вход натуральные десятичные числа, не превышающие 30 000, каждое в отдельной строке. Количество введённых чисел неизвестно, их последовательность заканчивается числом 0 (0 — признак окончания ввода, в последовательность не входит).

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

Пример работы программы: при вводе чисел 11, 25, 30, 14, 54, 0 программа должна вывести 18.

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

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

5 шагов
1

Считываем числа по одному до появления числа 0. Нулевое значение не входит в последовательность.

$$n = 0 \text{ — признак окончания ввода}$$
2

Последняя цифра записи натурального числа в системе счисления с основанием 7 равна остатку от деления этого числа на 7. Поэтому выбираем числа, для которых остаток равен 4.

$$n \bmod 7 = 4$$
3

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

$$\overline{x} = \dfrac{\text{sum}}{\text{count}}$$
4

Если подходящих чисел нет, количество равно нулю, поэтому выводим `NO`. Иначе выводим среднее арифметическое.

Один из корректных вариантов программы на Python:

$$summa = 0\ncount = 0\nwhile True:\n n = int(input())\n if n == 0:\n break\n if n % 7 == 4:\n summa += n\n count += 1\nif count == 0:\n print('NO')\nelse:\n print(summa / count)$$
Ответ

summa = 0
count = 0
while True:
n = int(input())
if n == 0:
break
if n % 7 == 4:
summa += n
count += 1
if count == 0:
print('NO')
else:
print(summa / count)

Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.

Где здесь ошибаются

Проверяют делимость на 7 вместо проверки остатка 4.

Включают число 0 в сумму или количество элементов.

Пытаются переводить каждое число в семеричную систему счисления вручную.

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

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

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

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

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

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