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