Шешімі: Среднее чисел в системе 7
Напишите программу, которая в последовательности натуральных десятичных чисел определяет среднее арифметическое элементов, запись которых в системе счисления с основанием 7 оканчивается цифрой 4. Если среди входных данных таких элементов нет, программа должна вывести «NO».
Программа получает на вход натуральные десятичные числа, не превышающие 30 000, каждое в отдельной строке. Количество введённых чисел неизвестно, их последовательность заканчивается числом 0 (0 — признак окончания ввода, в последовательность не входит).
Программа должна вывести одно число — среднее арифметическое десятичных чисел последовательности, запись которых в 7-ричной системе счисления оканчивается цифрой 4, или «NO», если среди входных данных таких элементов нет.
Пример работы программы: при вводе чисел 11, 25, 30, 14, 54, 0 программа должна вывести 18.
Шешім по шагам
5 қадамСчитываем числа по одному до появления числа 0. Нулевое значение не кіреді в последовательность.
$$n = 0 \text{ — признак окончания ввода}$$Последняя цифра записи натурального числа в системе счисления с основанием 7 равна остатку от деления этого числа на 7. Поэтому выбираем числа, для которых остаток равен 4.
$$n \bmod 7 = 4$$Для выбранных чисел накапливаем сумму и увеличиваем количество. После завершения ввода вычисляем среднее арифметическое.
$$\overline{x} = \dfrac{\text{sum}}{\text{count}}$$Если подходящих чисел нет, количество равно нулю, поэтому выводим `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 в сумму или количество элементов.
Пытаются переводить каждое число в семеричную систему счисления вручную.
Делят сумму на общее количество введённых чисел, а не на количество подходящих.
Не обрабатывают случай отсутствия подходящих элементов.