На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число следующим образом.
1. Строится двоичная запись числа N.
2. Складываются все цифры полученной двоичной записи. В конец записи (справа) дописывается остаток от деления суммы
3. Предыдущий пункт повторяется для записи с добавленной цифрой.
4. Результат переводится в десятичную систему и выводится на экран.
Пример. Дано число N = 13. Алгоритм работает следующим образом.
1. Двоичная запись числа N: 1101.
2. Сумма цифр двоичной записи 3, остаток от деления
3. Сумма цифр полученной записи — 4, остаток от деления
4. На экран выводится число 54.
Какое наибольшее число,
Рассмотрим числа,
9910 = 110 00112 — не может являться результатом работы алгоритма.
9810 = 110 00102 — не может являться результатом работы алгоритма.
9710 = 110 00012 — не может являться результатом работы алгоритма.
9610 = 110 00002 — может являться результатом работы алгоритма.
Таким образом, ответ — 96.
Ответ: 96.
Приведём другое решение на языке Python.
for n in range(100, 1, -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 < 100:
print(r)
break

