На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если сумма цифр в двоичной записи числа чётная, то к этой записи справа дописывается 0, а затем два левых разряда заменяются на 10;
б) если сумма цифр в двоичной записи числа нечётная, то к этой записи справа дописывается 1, а затем два левых разряда заменяются на 11.
Полученная таким образом запись является двоичной записью искомого числа R.
Например, для исходного числа 610 = 1102 результатом является число 10002 = 810, а для исходного числа 410 = 1002 результатом является число 11012 = 1310.
Укажите максимальное число N, после обработки которого с помощью этого алгоритма получается число R, меньшее, чем 35. В ответе запишите это число в десятичной системе счисления.
Приведём решение на языке Python.
maxi = 0
for n in range(1,1000):
s = bin(n)[2:]
if s.count("1") % 2 == 0:
s = "10" + s[2:] + "0"
else:
s = "11" + s[2:] + "1"
r = int(s, 2)
if r < 35:
maxi = max(maxi, n)
print(maxi)
Ответ: 24.

