Задача к ЕГЭ по информатике на тему «Запись числа в двоичной системе счисления» №1

Автомат обрабатывает натуральное число 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
Оцените статью
Я решу все!