Cod sursa(job #3235983)

Utilizator newagear2Dragan Iulian newagear2 Data 24 iunie 2024 20:49:15
Problema Al k-lea termen Fibonacci Scor 0
Compilator py Status done
Runda Arhiva educationala Marime 0.49 kb
def fibmod(n, m):
    assert 1 <= n <= 10**18, n
    assert 2 <= m <= 10**6, m

    def f(n):
        if n == 0:
            return 0, 1
        else:
            a, b = f(n // 2)
            c = a * (2*b - a) % m
            d = (a**2 + b**2) % m

            if n % 2 == 0:
                return c, d
            else:
                return d, (c + d) % m

    return f(n)[0]
    
fin = open("kfib.in", "r")
fout = open("kfib.out", "w")

n = int(fin.read())

fout.write(str(fibmod(n, 666013)))