''' № 5.58 (; КП‑326 (А. Богданов)). Назовём битом чётности остаток от деления числа единиц двоичной записи на 2. На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом: 1. Строится двоичная запись числа N. 2 Если число N четное, то к двоичному представлению слева дописывается 1, а справа бит чет‑ ности числа N; если число нечетное, то к двоичному представлению справа дописывается 0 и затем бит четности числа N. 3. Полученная таким образом запись является двоичной записью искомого числа R. Например, для исходного числа 12 = 11002 результатом является число 1110002 = 56, а для исход‑ ного числа 5 = 1012 результатом является число 101002 = 20. Укажите число N, после обработки которого с помощью этого алгоритма получается минимальное число R, большее 100. n: min R > 100 ''' def alg(n): n2 = bin(n)[2:] if n % 2 == 0: n2 = '1' + n2 + str(n2.count('1') % 2) else: n2 = n2 + '0' + str(n2.count('1') % 2) r = int(n2, 2) return r t = [] for n in range(1, 100): r = alg(n) if r > 100: #t += [ [r, n] ] t.append([r, n]) print(min(t)[1]) # 25 :) #n: min R > 100 #[[110, 5], [100, 24], [101, 30] ]