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

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

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

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

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

Решение:

Python


def R(N):
    bn = f'{N:b}'
    p = -1
    for i in range(len(bn) - 1, -1, -1):
        if bn[i] == '0':
            p = i
            break
    if p == -1:
        return None
    bn = bn[:p] + bn[:2] + bn[p + 1:] if p < len(bn) else ''
    return int(bn[::-1], 2)

for N in range(4, 100):
    if R(N) and R(N) == 123:
        print(N)
        break

Ответ: \(47\)