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...