题解 | #Fibonacci数列#

Fibonacci数列

https://www.nowcoder.com/practice/18ecd0ecf5ef4fe9ba3f17f8d00d2d66

输入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")

全部评论

相关推荐

牛客963010790号:为什么还要收藏
点赞 评论 收藏
分享
冷艳的小师弟在看机会:jd测评乱点直接被挂了,哭死~
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务