题目描述
序列 fi 的定义如下:
- f1=1
- f2=a
- 当 i>2 时,fi=fi−1+fi−2
给定一个 k,请问找到 j,j 满足
fj≤k<fj+1
输入格式
- 第一行:单个整数 a
- 第二行:单个整数 k
输出格式
- 单个整数 j
数据范围
- 1≤a≤20
- 1≤k≤1,000,000,000
限制要求
内存限制: 256 Mb时间限制: 1000 ms
样例数据
输入:
1
10
输出:
6
说明:
10 介于 第6个数 与 第7个数 之间
解析
关键点:第三个数等于前2个数之和,代码如下:
#include <iostream>
using namespace std;
int main(){
int a,k,sum,f1,f2,num;
cin>>a>>k;
sum=0;
num=2;
f1=1;
f2=a;
sum=f1+f2;
while(sum<=k){
f1=f2;
f2=sum;
sum=f1+f2;
num++;
}
cout<<num<<endl;
return 0;
}
文章介绍了如何利用递推关系解决斐波那契数列问题,给定整数k,找到第一个大于或等于k且下一个数小于k的斐波那契数f_j。通过编程实现,计算到满足条件的数列项数num。
657






