На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если число N делится
б) если число N
Полученная таким образом запись является двоичной записью искомого числа R.
Например, для исходного числа 1210 = 11002 результатом является число 11001002 = 10010, а для исходного числа 410 = 1002 результатом является число 100112 = 1910.
Укажите минимальное число R,
Приведём решение на языке Python.
a = set()
for n in range(1, 150):
s = bin(n)[2:]
if n % 3 == 0:
s += s[len(s) - 3:]
if n % 3 != 0:
k = (n % 3) * 3
s1 = bin(k)[2:]
s += s1
r = int(s, 2)
if r > 151:
a.add(r)
print(min(a))
В результате выполнения программы получаем ответ — 163.
Приведём решение Ильи Андрианова на языке Python.
R = []
for n in range(1, 10000):
s = f'{n:b}'
if n % 3 == 0:
s += s[-3:]
else:
x = (n % 3) * 3
s += f'{x:b}'
r = int(s, 2)
if r > 151:
R.append(r)
print(min(R))

