превышение лимита времени

В задаче нужно найти остаток от деления n-го числа Фибоначчи на m. Код ниже решает ( использовала период пизано), но проблема в Time limit exceeded (не управляется в 3с). Что не так в коде? и как можно исправить ???

def fib(n, m):
    if n <= 1:
        return n
    else:
        a = [i for i in range(6*m)]
        a[0] = 0
        a[2] = 1
        b, c = 0, 1
        for i in range(2, 6*m):
            a[i] = (b+c) % m
            b ,c = c, b + c
            if a[i-1]==0 and a[i]==1:
                a[i-1:] = []
                break
        return a[n % len(a)]

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

Автор решения: Karina

Получилось, всем спасибо! Долго не могла понять что не так. Надо было просто в массиве отдельном числа Фибоначчи хранить, но не для всех n, а в одном цикле для массива остатков от деления по модулю.

→ Ссылка