Решите задачу (образец из класса под этой задачей)
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если количество разрядов в числе чётное, тогда в центр записи числа дописывается 000.
б) если количество разрядов в числе нечётное, тогда к этой записи слева дописывается 1, а справа дописывается 01.
Полученная таким образом запись является двоичной записью искомого числа R.
Например, для исходного числа 510 = 1012 результатом является число 1101012 = 5310, а для исходного числа 810 = 10002 результатом является число 10000002 = 6410.
Укажите
минимальное число N, после обработки которого с помощью этого алгоритма
получается число R, большее 100. В ответе запишите это число в
десятичной системе счисления.
В классе мы решили эту задачу:
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.1. Строится двоичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если число N делится на 3, то к двоичной записи справа дописываются последние три цифры;
б) если число N не делится на 3, то остаток от деления числа N на 3 умножается на три, а затем полученный результат в двоичном виде приписывается справа к двоичной записи.
Полученная таким образом запись является двоичной записью искомого числа R.
Например, для исходного числа 1210 = 11002 результатом является число 11001002 = 10010, а для исходного числа 410 = 1002 результатом является число 100112 = 1910.
Укажите минимальное число N, после обработки которого с помощью этого алгоритма получается число R, большее 76. В ответе запишите это число в десятичной системе счисления.
Решение:
N=0
R=0
while R<=76:
N+=1
x=N
x=bin(N)[2:]
if N%3==0:
x=x+x[-3:]
else:
x=x+bin((N%3)*3)[2:]
R=int(x,2)
print(N)
Решение в виде рассуждений или в виде программки присылайте в личные сообщения дневник ру
Комментариев нет:
Отправить комментарий