На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число следующим образом.
1. Строится двоичная запись числа N.
2. Складываются все цифры полученной двоичной записи. В конец записи (справа) дописывается остаток от деления суммы
3. Предыдущий пункт повторяется для записи с добавленной цифрой.
4. Результат переводится в десятичную систему и выводится на экран.
Пример. Дано число N = 13. Алгоритм работает следующим образом:
1. Двоичная запись числа N: 1101.
2. Сумма цифр двоичной записи 3, остаток от деления
3. Сумма цифр полученной записи — 4, остаток от деления
4. На экран выводится число 54.
Какое наибольшее число,
Рассмотрим числа,
8910 = 101 10012 — не может являться результатом работы алгоритма.
8810 = 101 10002 — не может являться результатом работы алгоритма.
8710 = 101 01112 — не может являться результатом работы алгоритма.
8610 = 101 01102 — может являться результатом работы алгоритма.
Таким образом, ответ — 86.
Ответ: 86.
Приведём другое решение на языке 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 < 90:
print(r)
break

