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