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

Просмотры: 37
Изменено: 3 марта 2025

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

  1. Строится двоичная запись числа \(N.\)
  2. К этой записи дописываются разряды по следующему правилу. Если число \(N\) кратно \(3,\) то справа дописываются три последние цифры двоичной записи; иначе остаток от деления числа \(N\) на \(3\) умножается на \(3,\) переводится в двоичную систему и записывается в конец двоичной записи.
  3. Полученная таким образом запись является двоичной записью искомого числа \(R.\)

Например, для числа \(12\) двоичная запись \(1100_2\) преобразуется в запись \(1100100_2 = 100,\) для числа \(4\) двоичная запись \(100_2\) преобразуется в \(10011_2 = 19.\) Укажите максимальное возможное значение \(R,\) меньшее \(170,\) которое может быть получено с помощью этого алгоритма. В ответе запишите это число в десятичной системе счисления.

Решение:

Python


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

print(max(R(N) for N in range(4, 200) if R(N) < 170))

Ответ: \(166\)