На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. К этой записи дописываются справа ещё два разряда по следующему правилу:
а) складываются все цифры двоичной записи числа N, и остаток от деления суммы
б) над этой записью производятся те же действия — справа дописывается остаток от деления суммы её цифр
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R. Укажите минимальное число R, которое превышает число 97 и может являться результатом работы данного алгоритма. В ответе это число запишите в десятичной системе счисления.
Заметим, что если число нечётное, то в конец его двоичной записи добавляются цифры 10, а если чётное — цифры 00.
Рассмотрим числа,
9810 = 110 00102 — не может являться результатом работы алгоритма.
9910 = 110 00112 — не может являться результатом работы алгоритма.
10010 = 110 01002 — не может являться результатом работы алгоритма.
10110 = 110 01012 — не может являться результатом работы алгоритма.
10210 = 110 01102 — является результатом работы алгоритма.
Ответ: 102.
Приведём другое решение на языке Python.
def f(s):
summa = 0
for i in range(len(s)):
summa += int(s[i])
return summa
for n in range(1, 100):
s = bin(n)[2:] # перевод в двоичную систему
s = str(s)
summa = f(s)
s = s + str(summa % 2)
summa = f(s)
s = s + str(summa % 2)
r = int(s, 2) # перевод в десятичную систему
if r > 97:
print(r)
break
Приведём решение Юрия Лысакова на языке Python.
for n in range(1,100):
b = str(bin(n)[2:])
b = b + str(b.count('1') % 2)
b = b + str(b.count('1') % 2)
r = int(b,2)
if r > 97:
print(r)
break

