Задание 5 ЕГЭ: двоичная запись: правило по чётности N
Двоичная запись: правило по чётности N. Тема номера — алгоритм построения числа. Ниже — пример с ответом и решением; кнопкой под ним можно решить такую же задачу с другими числами, ответ проверится сразу.
Пример
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если число N чётное, то справа к этой записи дописывается 00;
б) если число N нечётное, то слева к этой записи дописывается 1, а справа — 1.
Полученная таким образом запись является двоичной записью искомого числа R.
3. Результат переводится в десятичную систему и выводится на экран.
Например, для исходного числа 1210 = 11002 результатом является число 1100002 = 4810, а для исходного числа 1110 = 10112 это число 1101112 = 5510.
Укажите минимальное число N, после обработки которого с помощью этого алгоритма получается число R, не меньшее 299. В ответе запишите это число в десятичной системе счисления.
Ответ
65Решение
Правило проще всего применить программой: строим запись N, обрабатываем её по правилу и переводим результат в десятичную систему. Так как к записи всегда что-то дописывается, R больше N, поэтому перебора N до 999 хватает с запасом.
Для N = 1, 2, … получаем R = 7, 8, 15, 16, 27, 24, 31, 32, 51, 40, … Значения растут неравномерно: разные ветки правила дописывают разное количество разрядов, поэтому нужно проверять все N, а не останавливаться на первом «похожем».
Нужное значение получается при N = 65 = 10000012: R = 1100000112 = 387. В ответ идёт N: 65.
def R(n):
s = bin(n)[2:] # двоичная запись без 0b
if n % 2 == 0:
s = "" + s + "00"
else:
s = "1" + s + "1"
return int(s, 2) # обратно в число
print(min(n for n in range(1, 1000) if R(n) >= 299))