# === Вспомогательная функция: перевод числа r в систему счисления t ===
def f(r, t):
s = ''
while r > 0:
s = str(r % t) + s
r = r // t
return s
# ============================================================
# Задача 1 (№29337): двоичная запись
# Если сумма цифр чётная → приписать 0 справа, два левых разряда → "10"
# Если сумма цифр нечётная → приписать 1 справа, два левых разряда → "11"
# Найти максимальное N, при котором R ≤ 19
# ============================================================
a1 = []
for n in range(1, 100000):
b = f(n, 2) # двоичная запись N
d = sum(int(i) for i in b) # сумма цифр
if d % 2 == 0: # сумма чётная
b = b + '0' # дописать 0 справа
b = '10' + b[2:] # два левых → "10"
else: # сумма нечётная
b = b + '1' # дописать 1 справа
b = '11' + b[2:] # два левых → "11"
r = int(b, 2) # перевести в десятичную
if r <= 19:
a1.append(n)
print("Задача 1 — максимальное N:", max(a1))
# ============================================================
# Задача 2 (№28926): троичная запись
# Если N делится на 3 → дописать две последние троичные цифры справа
# Если N не делится на 3 → сумма цифр × 2, перевести в тройчную, дописать
# Найти минимальное нечётное R > 520
# ============================================================
a2 = []
for n in range(1, 100000):
b = f(n, 3) # троичная запись N
d = sum(int(i) for i in b) # сумма цифр
if n % 3 == 0: # N делится на 3
b = b + b[-2] + b[-1] # дописать две последние цифры
else: # N не делится на 3
b = b + f(d * 2, 3) # дописать (сумма × 2) в тройчной
r = int(b, 3) # перевести в десятичную
if r > 520 and r % 2 == 1: # нечётное и больше 520
a2.append(r)
print("Задача 2 — минимальное нечётное R > 520:", min(a2))