На вход алгоритма подается натуральное число \(N.\) Алгоритм строит по нему новое число \(R\) следующим образом:
Полученная таким образом является двоичной записью искомого числа \(R.\) Например, для исходного числа \(6 = 110_2\) результатом является число \(1000_2 = 8,\) а для исходного числа \(4 = 100_2\) результатом является число \(1101_2 = 13.\) Укажите минимальное число \(N,\) после обработки которого с помощью этого алгоритма получается число \(R,\) не меньшее \(16.\) В ответе запишите это число в десятичной системе счисления.
Решение:
Python
def R(N):
bn = bin(N)[2:]
if sum(int(z) for z in bn) % 2 == 0:
bn += '0'
bn = '10' + bn[2:]
else:
bn += '1'
bn = '11' + bn[2:]
return int(bn, 2)
#print(R(6), R(4))
for N in range(4, 100):
if R(N) >= 16:
print(N)
break
Ответ: \(8\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене