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