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

Просмотры: 15
Изменено: 12 апреля 2025

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

  1. Строится двоичная запись числа \(N.\)
  2. К полученному числу справа дописывается \(0,\) если в числе единиц больше, чем нулей; иначе дописывается \(1.\)
  3. Из середины двоичного числа убирается \(2\) разряда, если количество разрядов получилось четным, и \(3\) разряда, если нечетное.
  4. Результат переводится в десятичную систему.

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

  1. Двоичная запись числа \(N\): \(11 = 1011_2\)
  2. Единиц больше, чем нулей, новая запись \(10110_2.\)
  3. Длина нечётная, удаляем три средних разряда, новая запись \(10_2.\)
  4. Десятичное значение полученного числа \(2.\)

Каково должно быть исходное число, чтобы в результате его обработки автомат получил значение \(55?\)

Решение:

Python


def R(N):
    bn = f'{N:b}'
    bn += str(int(bn.count('1') <= bn.count('0')))
    m = len(bn) // 2
    return int(bn[:m-1] + bn[-m+1:], 2)

#print(R(11))
for N in range(11, 1000):
    if R(N) == 55:
        print(N)
        break

Ответ: \(195\)