栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

蓝桥杯 基础练习 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=1
f2=1
n=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=1
f2=1
n=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本身直接得到答案。而在递推前取余不影响结果。故而在递推前取余减少运算量。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/741314.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号