欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

蓝桥杯基础练习Fibonacci数列python|CSDN创作打卡

时间:2023-05-13
蓝桥杯 基础练习 Fibonacci数列 python

资源限制问题描述输入格式输出格式样例输入样例输出样例输入样例输出数据规模与约定实现代码注意事项 资源限制

时间限制: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本身直接得到答案。而在递推前取余不影响结果。故而在递推前取余减少运算量。

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。