题解 | #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")

全部评论

相关推荐

dongsheng66:如果想进大厂的话,在校经历没必要占这么大篇幅,可以把专业技能单独放一个专栏写,可以加个项目经历
点赞 评论 收藏
分享
10-30 22:18
已编辑
毛坦厂中学 C++
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务