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