一.题目
二.解题思路
【题目解析】:
本题是对于Fibonacci数列的一个考察,Fibonacci数列的性质是第一项和第二项都为1,后面的项形成递归:F(n) = F(n - 1) + F(n - 2)。
【解题思路】:
本题可以通过先找到距离N最近的两个Fibonacci数,这两个数分别取自距离N的最近的左边一个数L和右边一个数R,然后通过min(N - L, R - N)找到最小步数。
三.代码如下
#include<iostream>
using namespace std;
int main()
{
int N,f,l=0, f0=0,r=0,f1=1;
cin>>N;
while(1)
{
f=f0+f1;
f0=f1;
f1=f;
if(f<N)
l=N-f;
else
{
r=f-N;
break;
}
}
cout<<min(l,r)<<endl;
return 0;
}