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