Задача #1773
Алгоритмы
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится четверичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если количество значащих цифр в четверичной записи числа чётное, то к этой записи в середину дописывается 0;
б) если количество значащих цифр в четверичной записи числа нечётное, то запись не изменяется.
Полученная таким образом запись является десятичной записью искомого числа R.
Например, для исходного числа 610 = 124 результатом является число 10210, а для исходного числа 2110 = 1114 результатом является число 11110.
Укажите максимальное число N, после обработки которого с помощью этого алгоритма, получается число R, не большее, чем 180. В ответе запишите это число в десятичной системе счисления.
Решение
Ответ
Видео по задаче
def from_10(n, base):
res = ''
while n != 0:
last = n % base
res = res + str(last)
n //= base
return res[::-1]
for n in range(1, 10**5):
n_4 = from_10(n, 4)
count_d = len(n_4)
if count_d % 2 == 0:
n_4 = n_4[:count_d//2] + '0' + n_4[count_d//2:]
r = int(n_4)
if r <= 180:
print(n)