Алгоритм получает на вход натуральное число N и строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. В конец двоичной записи добавляется двоичный код остатка от деления числа N на 4.
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 на 4 равен 2, добавляем к двоичной записи цифры 10 (102 = 210), получаем 1110102 = 5810.
3. Результат работы алгоритма R = 58.
Назовем доступными числа, которые могут получиться в результате работы этого алгоритма. Например, числа 27 и 58 – доступные.
Какое наибольшее количество доступных чисел может быть на отрезке, содержащем 65 натуральных чисел?
Ответ:
СтатГрад Вариант ИН2310202 19 декабря 2023 – задание №5
Решение:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
a = [] for n in range(1000): b = bin(n)[2:] b = b + bin(n%4)[2:] r = int(b, 2) a.append(r) b = [0]*(max(a)+100) for r in a: b[r] = 1 m=0 for i in range(len(b)-65): m = max(m, sum(b[i:i+65])) print(m) |
Ответ: 25