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