题目描述
序列 𝑓𝑖fi 的定义如下:
- 𝑓1=1f1=1
- 𝑓2=𝑎f2=a
- 当 𝑖>2i>2 时,𝑓𝑖=𝑓𝑖−1+𝑓𝑖−2fi=fi−1+fi−2
给定一个 𝑘k,请问找到 𝑗j,𝑗j 满足
𝑓𝑗≤𝑘<𝑓𝑗+1fj≤k<fj+1
输入格式
- 第一行:单个整数 𝑎a
- 第二行:单个整数 𝑘k
输出格式
- 单个整数 𝑗j
数据范围
- 1≤𝑎≤201≤a≤20
- 1≤𝑘≤1,000,000,0001≤k≤1,000,000,000
样例数据
输入:
1
10
输出:
6
说明:
10 介于 第6个数 与 第7个数 之间
详见代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long a,k;
long long b,c,d;
cin>>a>>k;
if(k>=1&&k<a)
{
cout<<1;
return 0;
}
b=1;
c=a;
for(int i=2;i<=k;i++)
{
d=b+c;
if(d>k)
{
cout<<i;
return 0;
}
b=c;
c=d;
}
return 0;
}