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

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

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

  1. Строится двоичная запись числа \(N.\)
  2. Все разряды полученного числа инвертируются.
  3. К полученному результату справа дописывается бит четности.

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

Например, для числа \(60\) алгоритм будет выполняться следующим образом:

  1. \(N = 60 = 111100_2.\)
  2. \(000011_2.\)
  3. \(0000110_2 = 6_{10}.\)

Укажите максимальное число \(R,\) меньшее \(170,\) которое может быть получено в результате работы этого алгоритма. В ответе запишите это число в десятичной системе.

Решение:

Python


def R(N):
    bn = f'{N:b}'
    bn = bn.replace('0', '2').replace('1', '0').replace('2', '1')
    bn += str(bn.count('1') % 2)
    return int(bn, 2)

print(max(R(x) for x in range(1, 1000) if R(x) < 170))

Ответ: \(169\)