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

Просмотры: 478
Изменено: 31 января 2025

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

  1. Строится двоичная запись числа \(N.\)
  2. Складываются все цифры полученной двоичной записи. Если сумма четная в конец дублируются два младших разряда, если нечетная – в конец дописываются проинвертированные два младших разряда.

Полученная таким образом запись является двоичной записью искомого числа \(R.\)

Пример. Дано число \(N = 13.\) Алгоритм работает следующим образом:

  1. Двоичная запись числа \(N:\) \(1101_2.\)
  2. Число единиц двоичной записи нечетное, следовательно, дописываем инвертированные два младших разряда – \(1101 + 10 = 110110.\)
  3. \(110110_2 = 54_{10}.\)

В результате работы автомата на экране появилось число, большее \(154.\) Для какого наименьшего значения \(N\) это возможно?

Решение:

Python


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

for N in range(10, 155):
    if R(N) > 154:
        print(N)
        break

Ответ: \(39\)