Решение: Максимальное число в последовательности
Напишите программу, которая в последовательности натуральных десятичных чисел определяет наибольший элемент, запись которого в системе счисления с основанием 9 оканчивается цифрой 1. Если среди входных данных таких элементов нет, программа должна вывести «NO».
Программа получает на вход в первой строке натуральное число $N$ ($3 \leq N \leq 10\,000$), затем $N$ натуральных чисел, не превышающих $30\,000$, каждое в отдельной строке.
Программа должна вывести одно десятичное число — наибольший элемент последовательности, запись которого в 9-ричной системе счисления оканчивается цифрой 1, или «NO», если среди входных данных нет подходящих элементов.
Пример входных данных:
5
10
9
11
91
28
Пример выходных данных:
91
Решение по шагам
4 шагаПоследняя цифра записи натурального числа в системе счисления с основанием 9 определяется остатком от деления этого числа на 9. Поэтому подходящие числа удовлетворяют условию:
$$x \bmod 9 = 1$$Последовательно считываем все $N$ чисел. Для каждого подходящего числа сравниваем его с текущим максимумом и сохраняем большее значение.
$$m = \max(m, x)$$Начальное значение максимума удобно заменить на `None`. Если после обработки всех чисел оно осталось равным `None`, подходящих элементов нет, поэтому выводим «NO».
Один из вариантов программы на Python:
$$n = int(input())\nmaximum = None\nfor _ in range(n):\n x = int(input())\n if x % 9 == 1:\n if maximum is None or x > maximum:\n maximum = x\nprint(maximum if maximum is not None else 'NO')$$Проверять условие x % 9 == 1 и вывести максимальное подходящее число либо NO.
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Переводят число в строку или в другую систему счисления, хотя достаточно найти остаток от деления на 9.
Проверяют делимость на 9, то есть условие x % 9 == 0, вместо остатка 1.
Выводят 0 или другое начальное значение, если подходящих чисел нет, вместо «NO».
Забывают обработать первое подходящее число при инициализации максимума.