Задание №16 — Алгоритмы и программирование
Напишите программу, которая в последовательности натуральных десятичных чисел определяет среднее арифметическое элементов, запись которых в системе счисления с основанием 5 оканчивается нечётной цифрой. Если среди входных данных таких элементов нет, программа должна вывести «NO».
Программа получает на вход натуральные десятичные числа,
не превышающие 30 000, каждое в отдельной строке. Количество введённых чисел неизвестно, их последовательность заканчивается числом 0 (0 – признак окончания ввода, в последовательность не входит).
Программа должна вывести одно число – среднее арифметическое десятичных чисел (элементов последовательности), запись которых
в системе счисления с основанием 5 оканчивается нечётной цифрой,
или «NO», если среди входных данных таких элементов нет.
Пример работы программы
Входные данные | Выходные данные |
12 15 10 71 50 11 0 | 41 |
Проверка решения с помощью ИИ доступна авторизованным пользователям
Решение.
Для решения этой задачи нам необходимо последовательно считывать числа до тех пор, пока не встретится 0. Для каждого числа нужно проверить условие и, если оно выполняется, обновить переменные для расчёта среднего арифметического.
Шаг 1: Разбор условия.
Нам нужно найти числа, запись которых в системе счисления с основанием 5 оканчивается нечётной цифрой.
В любой системе счисления с основанием последняя цифра числа — это остаток от деления этого числа на .
Следовательно, последняя цифра в пятеричной системе — это остаток от деления десятичного числа на 5.
Нам подходят числа, у которых этот остаток нечётный, то есть равен 1 или 3 (так как остатки при делении на 5 могут быть только 0, 1, 2, 3, 4).
Шаг 2: Алгоритм действий.
1. Создадим две переменные: для накопления суммы подходящих чисел и для их подсчёта. Изначально обе равны 0.
2. Организуем цикл чтения чисел. Будем считывать число . Если , прерываем цикл.
3. Для каждого проверяем условие: . Это означает, что остаток от деления на 5 является нечётным числом.
4. Если условие верно, прибавляем к и увеличиваем на 1.
5. После окончания цикла проверяем: если , вычисляем среднее арифметическое как . Если , выводим «NO».
Шаг 3: Пример реализации на языке Python.
sum_val = 0
count = 0
x = int(input())
while x != 0:
last_digit_5 = x % 5
if last_digit_5 % 2 != 0:
sum_val += x
count += 1
x = int(input())
if count > 0:
print(sum_val / count)
else:
print("NO")
Шаг 4: Проверка на примере.
Входные данные: 12, 15, 10, 71, 50, 11, 0.
- 12: (чётная) — пропускаем.
- 15: (чётная) — пропускаем.
- 10: (чётная) — пропускаем.
- 71: (нечётная) — подходит. , .
- 50: (чётная) — пропускаем.
- 11: (нечётная) — подходит. , .
Среднее арифметическое: .
Ответ: 41.0
Источник: ФИПИ