На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. К этой записи дописываются справа ещё два разряда по следующему правилу:
а) складываются все цифры двоичной записи числа N, и остаток от деления суммы
б) над этой записью производятся те же действия — справа дописывается остаток от деления суммы её цифр
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R. Укажите минимальное число R, которое превышает число 396 и может являться результатом работы данного алгоритма. В ответе это число запишите в десятичной системе счисления.
Заметим, что 39610 = 1100011002, исходное число N — 11000112. Значит, в результате работы алгоритма не может получится двоичных чисел 1100011012, 1100011102 и 1100011112. Рассмотрим следующее число N — 11001002. В результате работы алгоритма получится число 1100100102 = 40210. Это и будет ответ.
Ответ: 402.
Приведём другое решение на языке Python.
for n in range(4, 1000):
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 > 396:
print(r)
break

