Как ускорить цикл for?

получаю превышение ограничение времени, как можно ускорить цикл или использовать что то вроде numpy? суть задачи найти любое число и сложить вводному числу которое сделает вводное число палиндромным, длина обеих чисел должны быть одинаковыми input: 3 2 99 4 1023 3 385 output: 32 8646 604 В первом примере из условия 99+32=131 — палиндром. Число 12 также будет являться ответом, так как 99+12=111. Во втором примере из условия 1023+8646=9669. В третьем примере из условия 385+604=989.

# Сумма значений b по всем наборам входных данных не превосходит 100000
    a = int(input())
    for i in range(a):
        b = int(input())  # (2 <= b <= 100000) — длина числа
        c = int(input())  # число
        e = "1"
        for i1 in range(b-1):
            e += "0"
        for i2 in range(int(e), int(e)*10-1):
            if str(c + i2) == str(c + i2)[::-1]:
                print(i2)
                break

Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

Для числа из b знаков попробуем в качестве палиндрома b девяток (9....9). Если разница слишком мала, попробуем b + 1 единицу (1...1):

for _ in range(int(input())):
    b = int(input())  # (2 <= b <= 100000) — длина числа
    c = int(input())  # число
    r = 10 ** b - 1
    e = r - c
    if e < 10 ** (b - 1):
        r = (10 ** (b + 1) - 1) // 9
        e = r - c
    assert 10 ** (b - 1) <= e < 10 ** b
    print(e)
→ Ссылка