Автомат обрабатывает натуральное число N по следующему алгоритму:
1. Строится двоичная запись числа N.
2. Складываются все цифры полученной двоичной записи. В конец записи (справа) дважды дописывается остаток от деления суммы на 2.
3. Результат переводится в десятичную систему и выводится на экран.
Пример. Дано число N = 19. Алгоритм работает следующим образом:
1. Двоичная запись числа N: 10011.
2. Сумма цифр двоичной записи 3, остаток от деления на 2 равен 1, новая запись 1001111.
3. На экран выводится число 79.
Какое наименьшее четное число, может появиться на экране в результате работы автомата, если известно, что на вход подавалось число больше 55?
for N in range(56, 500):
r = bin(N) # Можно указать сразу r = bin(N)[2:]
p = r[2:]
k = 0 # Переменная для суммы цифр в числе p
for i in p: # Пробегаемся по цифрам
k += int(i) # Переводим их из строкового формата в числовой и суммируем
octat = k % 2 # Вычисляем остаток от деления суммы на 2
now = str(p) + str(octat) + str(octat) # Дважды дописываем его в конец исходного числа (справа)
number = int(now, 2) # Переводим число в 10 с/с
ask = number % 2 # Определяем чётность числа
if ask == 0: # Если number чётное // Можно также сразу написать number % 2 == 0, без дополнительной переменной ask
print(number) # Выводим ответ
break # Прекращаем перебор значений N, так как уже нашли минимальное
Ответ: 228