Алгоритм получает на вход натуральное число и строит по нему новое число следующим образом:
-
Строится двоичная запись числа .
-
Если сумма цифр десятичной записи заданного числа нечётна, то в конец двоичной записи дописывается 1, если чётна – 0.
3–4. Пункт 2 повторяется для вновь полученных чисел ещё два раза.
- Результатом работы алгоритма становится десятичная запись полученного числа .
Пример. Дано число = 17. Алгоритм работает следующим образом:
-
Строим двоичную запись: 1710 = 100012.
-
Сумма цифр числа 17 – чётная, дописываем к двоичной записи 0, получаем 1000102 = 3410.
-
Сумма цифр числа 34 – нечётная, дописываем к двоичной записи 1, получаем 10001012 = 6910.
-
Сумма цифр числа 69 – нечётная, дописываем к двоичной записи 1, получаем 100010112 = 13910.
-
Результат работы алгоритма = 139.
Определите наименьшее возможное значение > 1028, которое может получиться в результате работы алгоритма.
Решение:
Решение на Python:
otv = []
for N in range(1, 1000):
R = bin(N)[2:]
for i in range(3):
x = int(R, 2)
R += str(sum(int(cifra) for cifra in str(x)) % 2)
R = int(R, 2)
if R > 1028:
otv.append(R)
print(min(otv))
Ответ: 1035