Загрузка данных


# === Вспомогательная функция: перевод числа 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))