На вход алгоритма подаётся натуральное число . Алгоритм строит по нему новое число следующим образом.
-
Строится двоичная запись числа .
-
Далее если исходное число чётное, то справа к построенной двоичной записи числа приписывается 0, если нечётное, то приписывается 1.
-
Далее полученная на втором шаге алгоритма запись обрабатывается по следующему правилу: a) если количество единиц в двоичной записи кратно трём, то в этой записи два левых разряда заменяются на 11; б) если количество единиц в двоичной записи некратно трём, то в этой записи два левых разряда заменяются на 10.
Полученная таким образом запись является двоичной записью искомого числа . Например, для исходного числа , результатом является число , а для исходного числа результатом является число .
Укажите минимальное число , после обработки которого с помощью этого алгоритма получается число , не меньшее, чем 26. В ответе запишите это число в десятичной системе счисления.
Решение:
Решение на Python:
for N in range(200):
N2 = bin(N)[2:]
if N % 2 == 0:
N2 = N2+'0'
else:
N2 = N2+'1'
if N2.count('1') % 3 == 0:
N2 = '11'+N2[2:]
else:
N2 = '10'+N2[2:]
R = int(N2, 2)
if R >= 26:
print(N)
break
Ответ: 9