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