我试图输出F(n)mod m来查找斐波那契数的余数,其中F(n)可能是一个很大的数:
# Uses python3
n, m = [int(x) for x in input().split()]
def fib(n):
a = [0, 1]
if (n <=1):
return n
else:
for i in range(1, n):
a.append((a[-1] + a[-2])%m)
return a[i+1]
print (fib(n))
当我输入239 1000
时,它返回161
作为余数,这是正确的。但是,例如更大的投入。 2816213588 239
,它似乎已超过时间限制,我该怎么做才能改善代码?谢谢。