Шешімі: Среднее чисел по остатку
Напишите программу, которая в последовательности натуральных десятичных чисел определяет среднее арифметическое элементов, запись которых в системе счисления с основанием 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.
Выводят сумму подходящих чисел вместо среднего арифметического.
Не обрабатывают случай, когда подходящих чисел нет.
Используют целочисленное деление вместо обычного деления.