На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
- Строится двоичная запись числа N.
- Далее эта запись обрабатывается по следующему правилу:
a) если число N делится на 3, то к этой записи дописываются три последние двоичные цифры;
б) если число N на 3 не делится, то остаток от деления умножается на 3, переводится в двоичную запись и дописывается в конец числа.
Полученная таким образом запись является двоичной записью искомого числа R. - Результат переводится в десятичную систему и выводится на экран.
Укажите максимальное число N, после обработки которого с помощью этого алгоритма получается число R, меньшее 130.
Решение:
Решение на Python:
otv = [] #Создаем список, куда будем добавлять необходимые данные.
for N in range (1, 100): #Создаем перебор N
R = bin(N) [2:] #0бъявляем R в двоичной сс
#начинаем проверку условий:
if N % 3 == 0:
R = R + R[-3:]
else:
R = R + bin(N % 3 * 3)[2:]
R = int(R, 2) #Переводим R в десятичную ccl
if R < 130: #Добавляем R в наш список
otv.append(N)
print(max(otv))
Ответ: 31
Ответ:
31