Алгоритм получает на вход натуральное число и строит по нему новое число следующим образом:
-
Строится двоичная запись числа .
-
Складываются все цифры полученной двоичной записи. В конец записи (справа) дописывается остаток от деления суммы на 2.
-
Предыдущий пункт повторяется для записи с добавленной цифрой.
-
Результат переводится в десятичную систему.
Пример. Дано число = 13. Алгоритм работает следующим образом:
-
Двоичная запись числа : 1101.
-
Сумма цифр двоичной записи 3, остаток от деления на 2 равен 1, новая запись 11011.
-
Сумма цифр полученной записи 4, остаток от деления на 2 равен 0, новая запись 110110.
-
Результат работы алгоритма = 54.
При каком наименьшем числе в результате работы алгоритма получится > 170? В ответе запишите это число в десятичной системе счисления.
Решение:
Решение на Python:
otv = []
for N in range(1, 1000):
R = bin(N)[2:]
R += str(R.count('1') % 2)
R += str(R.count('1') % 2)
R = int(R, 2)
if R > 170:
otv.append(N)
print(min(otv))
Ответ: 43