Алгоритм получает на вход натуральное число N и строит по нему новое число R следующим образом:
1. Строится двоичная запись числа N.
2. В конец двоичной записи добавляется двоичный код остатка от деления числа N
3. Результатом работы алгоритма становится десятичная запись полученного числа R.
Пример 1. Дано число N = 13. Алгоритм работает следующим образом.
1. Строим двоичную запись: 1310 = 11012.
2. Остаток от деления 13 на 4 равен 1, добавляем к двоичной записи цифру 1, получаем 110112 = 2710.
3. Результат работы алгоритма R = 27.
Пример 2. Дано число N = 14. Алгоритм работает следующим образом.
1. Строим двоичную запись: 1410 = 11102.
2. Остаток от деления 14
3. Результат работы алгоритма R = 58.
Назовём доступными числа, которые могут получиться в результате работы этого алгоритма. Например,
Возможные остатки от деления числа
Рассмотрим какие цифры будут на конце чисел, при делении
Остаток 0 при делении
Остаток 1 при делении
Остаток 2 при делении
Остаток 3 при делении
Посчитаем доступные числа.
Приведём решение на языке Python.
count = 0
for x in range(1_100_000_000, 1_987_653_210+1):
if x%16 in [10,15] or x%8 in [0,3]:
count += 1
print(count)
Ответ: 332869954.

