эти функции я использовал для решения задачи:
def task_alg(n):
a = (str(bin(n)))[2:]
a = list(a)
a.append(a[len(a)-1])
co = 0
for i in a:
if i == '1':
co += 1
if co % 2 == 0:
a.append('0')
else:
a.append('1')
co += 1
if co % 2 != 0:
a.append('1')
else:
a.append('0')
return a
def l_concat(s):
tmp = ''
for i in s:
tmp += i
return tmp
task_alg() - выполняет основные действия алгоритма и дает на выход массив (список) битов двоичного представления результата алгоритма
l_concat() - складывает список в строку
пусть n число, обрабатываемое алгоритмом, тогда результат алгоритма вычисляется следующим образом:
result = int(('0b'+l_concat(task_alg( n ))),2)
обычным перебором значения n в [0,+inf) первым результатом, удволетворяющим условию result > 105, будет n = 13 и result = 108, a при n = 13 result = 96, значит ответ 108.
Но в ответе к заданию получен ответ 111. Я считаю, что этот ответ неверный по двум причинам.
Первая изложена выше.
Вторая: при n = 14 мы получаем result = 114, а это означает, что несуществует целочисленного n, для которого result = 111