Шешімі: Среднее по последней цифре
Напишите программу, которая в последовательности натуральных десятичных чисел определяет среднее арифметическое элементов, запись которых в системе счисления с основанием 5 оканчивается нечётной цифрой. Если среди входных данных таких элементов нет, программа должна вывести «NO».
Программа получает на вход в первой строке натуральное число $N$ ($3 \leq N \leq 10\,000$), затем $N$ натуральных чисел, не превышающих 30 000, каждое в отдельной строке.
Программа должна вывести одно число — среднее арифметическое десятичных чисел, запись которых в 5-ричной системе счисления оканчивается нечётной цифрой, или «NO», если среди входных данных таких элементов нет.
Пример: для входных данных 6, 12, 15, 10, 71, 50, 11 программа должна вывести 41.
Шешім по шагам
5 қадамПоследняя цифра числа в пятеричной системе счисления совпадает с остатком от деления этого числа на 5. Возможные последние цифры — 0, 1, 2, 3 и 4. Нечётными являются цифры 1 и 3.
$$d = n \bmod 5$$Для каждого входного числа проверяем, что его остаток от деления на 5 нечётный. Подходящие числа добавляем к сумме, а количество таких чисел увеличиваем на единицу.
$$(n \bmod 5) \bmod 2 = 1$$Если подходящих чисел нет, выводим NO. Иначе выводим среднее арифметическое их десятичных значений.
$$\overline{x} = \dfrac{S}{K}$$Программа на Python:
n = int(input())
s = 0
k = 0
for _ in range(n):
x = int(input())
if (x % 5) % 2 == 1:
s += x
k += 1
if k == 0:
print('NO')
else:
print(s / k)
Подходящие числа выбираются по условию (x % 5) % 2 == 1; при отсутствии таких чисел выводится NO, иначе — s / k.
Бұл жауап талдау нәтижесінде алынды, бірақ банктің ресми кілтімен тексерілген жоқ — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Проверяют нечётность самого числа, а не последней цифры его пятеричной жазбалар.
Используют деление // вместо вычисления среднего арифметического.
Не обрабатывают случай, когда подходящих чисел нет.
Забывают увеличить счётчик подходящих элементов.