На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если число N кратно 3, тогда в конец дописывается три младших разряда полученной двоичной записи,
б) если число N не кратно 3, тогда в конец дописывается двоичная последовательность, являющаяся результатом умножения 3 на остаток от деления числа N на 3.
Полученная таким образом запись является двоичной записью искомого числа R.
Например, для исходного числа 510 = 1012 результатом является число 1011102 = 4610, а для исходного числа 910 = 10012 результатом является число 10010012 = 7310.
Укажите наибольшее число N, после обработки которого с помощью этого алгоритма получается число R, меньшее 100. В ответе запишите это число в десятичной системе счисления.
Ответ:
Досрочный ЕГЭ по информатике 2023 г. Евгений Джобс – задание №5
Решение:
Решение на Python — Зайнулин Салават Рифкатович
|
1 2 3 4 5 6 7 8 9 |
for i in range(1, 10000): n = bin(i)[2:] if i % 3 == 0: s = str(n) + str(n)[-3:] else: s = str(n) + str(bin(3 * (i%3))[2:]) a = int(s, 2) if a < 100: print(i) |
Ответ: 22
