网易笔试题 Fibobacci数列
来源:互联网 发布:淘宝客服自我评价 编辑:程序博客网 时间:2024/06/10 15:50
题目描述
Fibonacci数列是这样定义的:
F[0] = 0
F[1] = 1
for each i ≥ 2: F[i] = F[i-1] + F[i-2]
因此,Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, ...,在Fibonacci数列中的数我们称为Fibonacci数。给你一个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X-1或者X+1,现在给你一个数N求最少需要多少步可以变为Fibonacci数。
F[0] = 0
F[1] = 1
for each i ≥ 2: F[i] = F[i-1] + F[i-2]
因此,Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, ...,在Fibonacci数列中的数我们称为Fibonacci数。给你一个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X-1或者X+1,现在给你一个数N求最少需要多少步可以变为Fibonacci数。
输入描述:
输入为一个正整数N(1 ≤ N ≤ 1,000,000)
输出描述:
输出一个最小的步数变为Fibonacci数"
示例1
输入
15
输出
2
最后判断Fb(tmp) 和Fb(tmp - 1)谁距离N最近,求出差值
#include<iostream>#include<algorithm>using namespace std;//定义Fibnaccio数列int Fb(int n){ if(n == 0) return 0; else if(n == 1) return 1; else return Fb(n-1)+Fb(n-2);}//找到第一个大于N的值int main(){ int n; cin >> n; int tmp=0; for(int i = 0; i < 100000; i++){ if(Fb(i) > n){ tmp = i; break; } } int m = abs(Fb(tmp) - n); int k = abs(Fb(tmp - 1) - n); int fbi = m > k ? k : m; cout << fbi <<endl; return 0;}
阅读全文
0 0
- 网易笔试题 Fibobacci数列
- 2018网易笔试编程题----重排数列
- 2018网易笔试编程题----重排数列
- 网易笔试:Fibonacci数列
- 网易笔试编程-Fibonacci数列
- 2017年网易互联网内推笔试题-Fibonacci数列
- 网易秋招2018笔试题 重排数列
- 网易笔试编程题——Fibonacci数列
- 网易笔试题--幸运袋子(数列各项和大于数列各项乘积)
- 网易笔试:小易喜欢的数列
- 8.12网易内推笔试题:小易喜欢的数列 java实现
- 网易2017内推笔试题--小易老师的疯狂数列
- 网易一道笔试题!
- 网易笔试题
- 网易笔试题
- 网易笔试题一道
- 网易一道笔试题!
- 网易笔试题
- Nim游戏·改(博弈论)
- Java笔记(二):垃圾收集
- poj 1111 Image Perimeters(dfs)
- HBase RPC 理解之二
- 【云计算的1024种玩法】为求职加分:为自己建个炫酷的简历网页
- 网易笔试题 Fibobacci数列
- Java中对List集合内的元素进行顺序、倒序、随机排序的示例代码
- LightOJ-1007-Mathematically Hard [欧拉函数]
- DB2-SQLSTATE,DB2-SQLCODE
- Codeforces 832D Misha, Grisha and Underground【LCA】
- Hibernate3升级至Hibernate4.3报“数字溢出”
- Java_Date
- fopen 和 fopen_s
- 七夕,单身狗有话要说....