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