Алгоритм получает на вход натуральное число N и строит по нему новое число R следующим образом:
1. Строится двоичная запись числа N.
2. Складываются все цифры полученной двоичной записи. В конец записи (справа) дописывается остаток от деления суммы
3. Предыдущий пункт повторяется для записи с добавленной цифрой.
4. Результат переводится в десятичную систему.
Пример. Дано число N = 13. Алгоритм работает следующим образом:
1. Двоичная запись числа N: 1101.
2. Сумма цифр двоичной записи — 3, остаток от деления
3. Сумма цифр полученной записи — 4, остаток от деления
4. Результат работы алгоритма R = 54.
При каком наименьшем числе N в результате работы алгоритма получится R > 170? В ответе запишите это число в десятичной системе счисления.
Если изначально сумма разрядов была чётная, то в конец запишется 00, что эквивалентно
Если же сумма была нечётная, то запишется 10, что эквивалентно
В обоих случаях число получается чётным.
Посмотрим на чётные числа,
— на конце 00, но сумма остальных разрядов чётна. Число подходит под первый случай, значит, число, из которого оно было получено, равно
Ответ: 43.
Приведём другое решение на языке Python.
for n in range(2, 100): # начинаем с 2, так как число 1 имеет только одну цифру
s = bin(n)[2:] # перевод в двоичную систему
s = str(s)
s += str(s.count("1") % 2)
s += str(s.count("1") % 2)
r = int(s, 2) # перевод в десятичную систему
if r > 170:
print(n)
break

