Решение: Минимальное число в девятеричной системе
Напишите программу, которая в последовательности натуральных десятичных чисел определяет наименьший элемент, запись которого в системе счисления с основанием 9 оканчивается цифрой 1. Если среди входных данных таких элементов нет, программа должна вывести «NO».
Программа получает на вход натуральные десятичные числа, не превышающие 30 000, каждое в отдельной строке. Количество введённых чисел неизвестно, их последовательность заканчивается числом 0, которое в последовательность не входит.
Программа должна вывести одно десятичное число — наименьший подходящий элемент последовательности — или «NO».
Решение по шагам
3 шагаПоследняя цифра записи натурального числа в системе счисления с основанием 9 определяется остатком от деления числа на 9.
$$n \bmod 9 = 1$$Будем читать числа по одному до появления числа 0. Для подходящих чисел будем обновлять минимальное значение.
Если подходящее число найдено, выведем его. Иначе выведем строку «NO».
Пример программы на Python:
n = int(input())
minimum = None
while n != 0:
if n % 9 == 1:
if minimum is None or n < minimum:
minimum = n
n = int(input())
if minimum is None:
print('NO')
else:
print(minimum)
n = int(input())
minimum = None
while n != 0:
if n % 9 == 1:
if minimum is None or n < minimum:
minimum = n
n = int(input())
if minimum is None:
print('NO')
else:
print(minimum)
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Проверяют остаток от деления на 10 вместо остатка от деления на 9.
Включают число 0 в последовательность.
Выводят 0 или бесконечность, если подходящих чисел нет, вместо строки «NO».
Находят первое подходящее число, но не минимальное.