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