资源限制问题描述输入格式输出格式样例输入样例输出样例输入样例输出数据规模与约定实现代码注意事项 资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。
当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
输入格式输入包含一个整数n。
输出格式输出一行,包含一个整数,表示Fn除以10007的余数。
样例输入10
样例输出55
样例输入22
样例输出7704
数据规模与约定1 <= n <= 1,000,000。
实现代码f1=1f2=1n=int(input())if n==1 or n==2: print(f1%10007)else: for i in range(n-2): f=(f1+f2)%10007 f1=f2 f2=f print(f)
错误代码
f1=1f2=1n=int(input())if n==1 or n==2: print(f1%10007)else: for i in range(n-2): f=f1+f2 f1=f2 f2=f print((f)%10007)
注意事项本题看似简单实则暗藏杀机Fibonacci数列 不断递推数据量庞大在n比较大时会出现超时问题,本题在问题描述中已经给予了我们提示“当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。”Fn非常大而我们需要知道的是Fn除以10007的余数所以提示我们可以绕过求Fn本身直接得到答案。而在递推前取余不影响结果。故而在递推前取余减少运算量。