網易筆試題 Fibobacci數列

2021-08-07 11:58:32 字數 756 閱讀 4803

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

思路:定義乙個fibnacci數列,然後查詢到第乙個大於n的值tmp,則 fb(tmp) > n > fb(tmp - 1)

最後判斷fb(tmp)  和fb(tmp - 1)誰距離n最近,求出差值

#include#includeusing namespace std;

//定義fibnaccio數列

int fb(int n)

//找到第乙個大於n的值

int main()

}int m = abs(fb(tmp) - n);

int k = abs(fb(tmp - 1) - n);

int fbi = m > k ? k : m;

cout << fbi <

網易有道筆試題

這幾道題都是從網上找的不知道是哪一年的網易有道的筆試題,拿來做做,練練手。1 列印如下形式的矩陣 n 5 1 2 9 10 25 4 3 8 11 24 5 6 7 12 23 16 15 14 13 22 17 18 19 20 21 n 6 1 2 9 10 25 26 4 3 8 11 24 ...

網易 筆試題(20190921)

要使得數字和達到要求並且最小,那就是剛好等於x值,即n值從後往前填充,逢9向前移一進製。def min bit sum x if x 10 return x res 0 base 1while x if x 9 res 9 base x 9else res x base x 0 base 10ret...

回文數(網易筆試)

coding utf 8 不用遞迴!人生苦短我用python 首尾指標跟蹤 兩個數不相等就進行加法 小的數加上相鄰的值 defhuiwen item,head,tail times 0 left item 0 head 0 right item 1 tail n 1 while headif lef...