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