Решение: Максимум с нечётной цифрой
Напишите программу, которая в последовательности натуральных десятичных чисел определяет наибольший элемент, запись которого в системе счисления с основанием 7 оканчивается нечётной цифрой. Если среди входных данных таких элементов нет, программа должна вывести «NO».
Программа получает на вход в первой строке натуральное число N (3 ≤ N ≤ 10 000), затем N натуральных чисел, не превышающих 30 000, каждое в отдельной строке.
Программа должна вывести одно десятичное число — наибольший элемент последовательности, запись которого в 7-ричной системе счисления оканчивается нечётной цифрой, или «NO», если среди входных данных таких элементов нет.
Решение по шагам
5 шаговПоследняя цифра записи натурального числа в системе счисления с основанием 7 определяется остатком от деления этого числа на 7.
$$d = x \bmod 7$$Нечётные цифры в семеричной системе счисления — это 1, 3 и 5. Поэтому число подходит, если остаток от его деления на 7 принадлежит множеству {1, 3, 5}.
$$x \bmod 7 \in \{1,3,5\}$$Во время чтения чисел храним наибольшее подходящее значение. Изначально удобно использовать значение None, чтобы отличить отсутствие подходящих чисел от найденного числа.
После обработки всех чисел выводим найденный максимум или NO, если подходящих чисел не было.
Пример программы:
$$data = list(map(int, open(0).read().split())) N = data[0] maximum = None for x in data[1:N + 1]: if x % 7 in (1, 3, 5): if maximum is None or x > maximum: maximum = x print(maximum if maximum is not None else 'NO')$$Программа должна проверять остаток от деления каждого числа на 7, находить максимум среди чисел с остатком 1, 3 или 5 и выводить NO при отсутствии таких чисел.
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Проверяют нечётность самого числа, а не последней цифры его семеричной записи.
Забывают, что остаток 0, 2, 4 или 6 соответствует чётной последней цифре.
Выводят 0 или другое начальное значение вместо NO, если подходящих чисел нет.
Сравнивают числа после перевода в семеричную систему, хотя для поиска максимума нужно сравнивать исходные десятичные значения.