Задание 5. Информатика. ЕГЭ. Поляков-7456

Просмотры: 492
Изменено: 1 февраля 2025

(ЕГЭ-2024) На вход алгоритма подаётся натуральное число \(N.\) Алгоритм строит по нему новое число \(R\) следующим образом.

  1. Строится двоичная запись числа \(N.\)
  2. Далее эта запись обрабатывается по следующему правилу:
    1. если сумма цифр двоичной записи чётная, то к этой записи справа дописывается \(0,\) а два левых разряда заменяются на \(10;\)
    2. если сумма цифр двоичной записи нечётная, то к этой записи справа дописывается \(1,\) а два левых разряда заменяются на \(11.\)

Полученная таким образом запись является двоичной записью искомого числа \(R.\) Например, для исходного числа \(6 = 110_2\) результатом является \(1000_2 = 8,\) а для исходного числа \(4 = 100_2\) результатом является \(1101_2 = 13.\) Укажите минимальное число \(N,\) после обработки которого с помощью этого алгоритма получается число \(R,\) большее \(50.\) В ответе запишите это число в десятичной системе счисления.

Решение:

Python


def R(N):
    bn = f'{N:b}'
    if bn.count('1') % 2 == 0:
        bn = '10' + bn[2:] + '0'
    else:
        bn = '11' + bn[2:] + '1'
    return int(bn, 2)

for N in range(4, 50):
    if R(N) > 50:
        print(N)
        break

Ответ: \(19\)