Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
刚开始做
def svd(n):
if(n==1):
return 1
elif(n==2):
return 1
else:
return svd(n-1)%10007+svd(n-2)%10007
n=int(input())
print(svd(n))
运行测试后,发现这样会超时因为使用迭代,数值太大,内存会不够所以用列表来存储
a=[]
a.append(1)
a.append(1)
n=int(input())
f=n-1
for i in range(2,n):
a.append((a[i-1]+a[i-2])%10007)
print(a[f])