def fibMem(n,mem):
if (mem[n] > -1):
return mem[n]
if (mem[n-1] >-1 and mem[n-2] >-1 ):
mem[n] = mem[n-1] + mem[n-2]
return mem[n]
else:
mem[n]=fibMem(n-1, mem) + fibMem(n-2, mem)
return mem[n]
def fib(n):
FF= [-2]*(n+1)
FF[0] = 0
if (n==0):
return FF[0]
FF[1] = 1
return fibMem(n, FF)
print(fib(500))
## 139423224561697880139724382870407283950070256587697307264108962948325571622863290691557658876222521294125
Version: 08 November 2026