''' № 5.57 (; КП‑310 (Д. Статный )). На вход алгоритма подаётся натуральное число N. Алгоритм стро‑ ит по нему новое число R следующим образом. 1. Строится двоичная запись числа N. 2. Далее эта запись обрабатывается по следующему правилу: а) если сумма цифр в двоичной записи числа чётная, то к этой записи справа дописывается 00, а затем два левых разряда заменяются на 11; б) если сумма цифр в двоичной записи числа нечётная, то к этой записи справа дописывается 11, а затем два левых разряда заменяются на 10. 3. Пункт 2 повторяется ещё раз для записи, полученной после второго пункта. Полученная таким образом запись является двоичной записью искомого числа R. Например, для исходного числа 6_10 = 110_2 результатом является число 96_10 = 1100000_2, а для исходного числа 4_10 = 100_2 результатом является число 79_10 = 1001111_2. Най дите максимальное число R, меньшее, чем 1500, которое может получится в результате работы алгоритма. max R < 1500 ''' def alg(n): n2 = bin(n)[2:] # пункт 2 if n2.count('1') % 2 == 0: n2 = n2 + '00' n2 = '11' + n2[2:] else: n2 = n2 + '11' n2 = '10' + n2[2:] # 3. Пункт 2 повторяется ещё раз if n2.count('1') % 2 == 0: n2 = n2 + '00' n2 = '11' + n2[2:] else: n2 = n2 + '11' n2 = '10' + n2[2:] r = int(n2, 2) return r t = [] for n in range(1, 100): r = alg(n) if r < 1500: # max R < 1500 t += [r] print(max(t)) # 1475 ok # ЕГЭ-5: 301 (16), 310 (1475), 326 (доп, ответ 25)