输入a;

最终目的:a最少多少步可以变为fib数

思路:找到距离a最近的两个fib数

一个小于等于a设为left,一个大于a设为right;

输出:min(a-left,right-a);

#include <iostream>
using namespace std;

int main() {
    int a;
    while (cin >> a) {
        int f=0,f1=0,f2=1,left,right;
        while(1){
            f=f1+f2;
            f1=f2;
            f2=f;
            if(f<=a){
                left=f;
            }else{
                right=f;
                break;
            }
        }
        cout<<min(a-left,right-a)<<endl;

    }
}
// 64 位输出请用 printf("%lld")