(А. Богданов) На вход алгоритма подаётся натуральное число \(N.\) Алгоритм строит по нему новое число \(R\) следующим образом:
Например, исходное число \(4_{10}=100_2\) преобразуется в число \(11000_2 = 48_{10},\) а исходное число \(13_{10} = 1101_2\) преобразуется в число \(110111_2 = 55_{10}.\) Укажите такое число \(N\) большее \(8,\) для которого число \(R\) является наименьшим среди чисел, превышающих \(88.\) В ответе это число запишите в десятичной системе счисления.
Решение:
Python
def R(N):
bn = f'{N:b}'
bn = bn + f'{bn.count("1"):b}' if N & 1 else '1' + bn + '00'
return int(bn, 2)
#print(R(4), R(13))
min_R = 10**10
ans = 0
for N in range(9, 88):
if 88 < R(N) < min_R:
min_R = R(N)
ans = N
print(ans)
Ответ: \(25\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене