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