OpenFIPI 2.0

D908DA

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.

1. Строится двоичная запись числа N.

2. Далее эта запись обрабатывается по следующему правилу:

а) если число N делится на 3, то к этой записи дописываются три последние двоичные цифры;

б) если число N на 3 не делится, то остаток от деления умножается на 3, переводится в двоичную запись и дописывается в конец числа.

Полученная таким образом запись является двоичной записью искомого числа R.

3. Результат переводится в десятичную систему и выводится на экран.

Например, для исходного числа 12 = 11002 результатом является число 11001002 = 100, а для исходного числа 4 = 1002 результатом является число 100112 = 19.

Укажите максимальное число N, после обработки которого с помощью этого алгоритма получается число R, меньшее чем 100.

Ответы

22

22

22

22

22

Решение: for n in range(1,1000): b = bin(n)[2:] if n%3==0: b = b + b[-3:] else: b = b + bin((n%3)*3)[2:] if int(b,2)<100: print(n,b) Ответ: 22

22

22

22

22