蓝桥杯每日一练之Fibonacci数列
Posted 静Yu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蓝桥杯每日一练之Fibonacci数列相关的知识,希望对你有一定的参考价值。
💛作者主页:静Yu
🧡简介:CSDN全栈优质创作者、华为云享专家、阿里云社区博客专家,前端知识交流社区创建者
💛社区地址:前端知识交流社区
🧡多种源码领取:各种福利
第十三届蓝桥杯大赛个人赛省赛比赛将于2022年4月9日(星期六)举办,趁现在寒假的时间抓紧时间备战一下。因为博主本人报名是C/C++组,所以更新所有内容都是C/C++相关知识。题目全部都是蓝桥杯官网题库真题。今天是备战刷题的第十三天。 |
题目:
Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。
当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
输入格式:
输入包含一个整数n.
输出格式:
输出一行,包含一个整数,表示Fn除以10007的余数
样例输入:
10
样例输出:
55
样例输入:
22
样例输出:
7704
解题思路:
其实这道题目就是经典的递归例题斐波那切数列,我们用递归思想可以解题,但是运行超时只得了30分。另外一种方法就是迭代的思想,成功拿到满分。
完整代码:
//递归解法
#include<iostream>
using namespace std;
int fib(int n)
if(n==1) return 1;
if(n==2) return 1;
return (fib(n-1)+fib(n-2))%10007;
int main()
int n;
cin>>n;
cout<<fib(n);
return 0;
//迭代
#include <iostream>
using namespace std;
int main()
int n;
cin>>n;
long long a[n];
a[0] = 1,a[1] = 1;
for(int i=2;i<n;i++)
a[i] = (a[i-2]+a[i-1])%10007;
cout<<a[n-1]<<endl;
return 0;
以上是关于蓝桥杯每日一练之Fibonacci数列的主要内容,如果未能解决你的问题,请参考以下文章