Решение: Максимальное число в последовательности
Напишите программу, которая в последовательности натуральных десятичных чисел определяет наибольший элемент, запись которого в системе счисления с основанием 9 оканчивается цифрой 1. Если среди входных данных таких элементов нет, программа должна вывести «NO». Программа получает на вход натуральные десятичные числа, не превышающие 30 000, каждое в отдельной строке. Количество введённых чисел неизвестно, их последовательность заканчивается числом 0 (0 — признак окончания ввода, в последовательность не входит). Программа должна вывести одно десятичное число — наибольший элемент последовательности, запись которого в 9-ричной системе счисления оканчивается цифрой 1, или «NO», если среди входных данных таких элементов нет.
Решение по шагам
5 шаговПоследняя цифра записи натурального числа в системе счисления с основанием 9 определяется остатком от деления этого числа на 9. Поэтому число подходит, если остаток равен 1.
$$x \bmod 9 = 1$$Считываем числа по одному. При получении 0 завершаем ввод, не обрабатывая это число.
Для подходящих чисел сохраняем наибольшее. Переменная max_value может быть сначала равна 0, так как все числа натуральные и положительные.
Если подходящих чисел не найдено, выводим строку NO; иначе выводим найденный максимум.
Один из корректных вариантов программы:
max_value = 0
while True:
x = int(input())
if x == 0:
break
if x % 9 == 1 and x > max_value:
max_value = x
if max_value == 0:
print('NO')
else:
print(max_value)
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Проверяют делимость числа на 9, хотя требуется остаток 1.
Обрабатывают число 0 как элемент последовательности.
Выводят 0 вместо NO, если подходящих чисел нет.
Ищут первое подходящее число, а не наибольшее.