507.py
На вход алгоритма подаётся натуральное число N.
Алгоритм строит по нему новое число R следующим образом.
Строится двоичная запись числа N.
Далее эта запись обрабатывается по следующему правилу:
а) если число N делится на 3, то к этой записи дописываются её три последние двоичные цифры;
б) если число N на 3 не делится, то остаток от деления умножается на 3,
переводится в двоичную запись и дописывается в конец числа.
Полученная таким образом запись является двоичной записью искомого числа R.
Результат переводится в десятичную систему и выводится на экран.
Например, для исходного числа 12 = 1100(2) результатом является число 1100100(2) = 100,
а для исходного числа 4 = 100(2) это число 10011(2) = 19.
Укажите минимальное число N, после обработки которого с помощью этого алгоритма
получается число R, не меньшее 200.
"""
На вход алгоритма подаётся натуральное число N.
Алгоритм строит по нему новое число R следующим образом.
Строится двоичная запись числа N.
Далее эта запись обрабатывается по следующему правилу:
а) если число N делится на 3, то к этой записи дописываются её три последние двоичные цифры;
б) если число N на 3 не делится, то остаток от деления умножается на 3,
переводится в двоичную запись и дописывается в конец числа.
Полученная таким образом запись является двоичной записью искомого числа R.
Результат переводится в десятичную систему и выводится на экран.
Например, для исходного числа 12 = 1100(2) результатом является число 1100100(2) = 100,
а для исходного числа 4 = 100(2) это число 10011(2) = 19.
Укажите минимальное число N, после обработки которого с помощью этого алгоритма
получается число R, не меньшее 200.
"""
for N in range(1, 10000):
binary = bin(N)[2:] # двоичная запись N
if N % 3 == 0: # если N делится на 3
binary = binary + binary[-3:] # дописываем 3 последние двоичные цифры
else: # если N не делится на 3
tail = bin((N % 3) * 3)[2:] # (остаток * 3) в двоичной записи
binary = binary + tail
R = int(binary, 2) # переводим в десятичную систему
if R >= 200:
print(N) # 26
break
"""
На вход алгоритма подаётся натуральное число N.
Алгоритм строит по нему новое число R следующим образом.
Строится двоичная запись числа N.
Далее эта запись обрабатывается по следующему правилу:
а) если число N делится на 3, то к этой записи дописываются её три последние двоичные цифры;
б) если число N на 3 не делится, то остаток от деления умножается на 3,
переводится в двоичную запись и дописывается в конец числа.
Полученная таким образом запись является двоичной записью искомого числа R.
Результат переводится в десятичную систему и выводится на экран.
Например, для исходного числа 12 = 1100(2) результатом является число 1100100(2) = 100,
а для исходного числа 4 = 100(2) это число 10011(2) = 19.
Укажите минимальное число N, после обработки которого с помощью этого алгоритма
получается число R, не меньшее 200.
"""
for N in range(1, 10000):
binary = bin(N)[2:] # двоичная запись N
if N % 3 == 0: # если N делится на 3
binary = binary + binary[-3:] # дописываем 3 последние двоичные цифры
else: # если N не делится на 3
tail = bin((N % 3) * 3)[2:] # (остаток * 3) в двоичной записи
binary = binary + tail
R = int(binary, 2) # переводим в десятичную систему
if R >= 200:
print(N) # 26
break