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