Разбор 5.PNG

Условие КЕГЭ: Тип 5 № 5589 (Уровень: Средний)

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

  1. Строится двоичная запись числа N.

  2. Далее эта запись обрабатывается по следующему правилу:

а) если количество разрядов в числе чётное, тогда в центр записи числа дописывается 111.

б) если количество разрядов в числе нечётное, тогда к этой записи справа дописывается 1, а затем два левых разряда заменяются на 11.

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

Укажите минимальное число N, после обработки которого с помощью этого алгоритма получается число R, большее 4000. В ответе запишите это  число в десятичной системе счисления.

Untitled

Комментарии к решению задачи:

  1. for n in range(1, 1000): - Мы создаем цикл for, который перебирает все значения от 1 до 999 (не включая 1000), хранящиеся в переменной n (можно смело брать больший диапазон, никто не гарантирует, что результат найдется быстро).
  2. s = bin(n)[2:] - Присваиваем переменной s бинарное представление значения переменной n, которое мы получаем с помощью функции bin(). Мы также обрезаем первые два символа, так как они представляют префикс 0b, который используется в Python для обозначения бинарных чисел (числа двоичной системы счисления).
  3. if len(s) % 2 == 0: - Проверяем условие на чётное количество разрядов len(s) в числе с помощью оператора %.
  4. s = s[:len(s)//2] + '111' + s[len(s)//2:] - Если длина строки s четная, мы вставляем три символа 111 в середине строки s.
  5. else: - Если длина строки s нечетная, то
  6. s = '11' + s[2:] + '1' - Добавляем два символа 11 в начало и конец строки s.
  7. r = int(s, 2) - Преобразуем измененную строку s обратно в целое число, используя функцию int(). Второй аргумент этой функции - 2 - указывает, что строка s интерпретируется как бинарное число.