№ 4317 Пробный 06.2022 /dev/inf advanced (Уровень: Сложный)
Автомат обрабатывает натуральное число *N
* по следующему алгоритму:
Строится пятеричная запись числа *N*
.
К полученной записи дописываются разряды. Если последняя цифра в пятеричной записи четная, справа дописывается 2, если нечетная – слева дописывается 2 и справа 3.
Результат переводится в десятичную систему и выводится на экран.
В результате работы автомата на экране появилось число, меньшее 1000. Для какого наибольшего значения *N
* данная ситуация возможна?
Комментарии к первому варианту решения задачи:
for n in range(1, 1000):
- Используем цикл for
для перебора всех значений от 1 до 999, присваивая каждое значение переменной n
.M = []
- Создаем пустой список M
.x = n
- Копируем значение переменной n
в переменную x
.while x > 0:
- Запускаем цикл while
, который будет выполняться, пока значение переменной x
больше 0.M.append(x % 5)
- Добавляем остаток от деления значения переменной x
на 5 в конец списка M
.x //= 5
- Делаем целочисленное деление значения переменной x
на 5 и присваиваем результат переменной x
.M.reverse()
- Разворачиваем список M
в обратном порядке.if M[-1] % 2 == 0:
- Проверяем, является ли последний элемент списка M
четным числом.