HDU4099 斐波那契數列與字典樹

2021-06-16 19:46:05 字數 990 閱讀 1864

題目:revenge of fibonacci

題意:給出斐波那契數列的前k位,k不超過40,找出最小的正整數n,滿足f(n)的前k位與給定數的前k位相同,斐波那契數列的項數不超過100000。

解析:本題可以分為兩步:

第一步就是預處理出100000項斐波那契數列的前40位,插入到字典樹中。

第二步就是查詢匹配求最小的n。

對於第一步,我們可以把斐波那契數列精確到50多位,然後只存40位即可,這樣就防止進製的誤差。在斐波那契數列加法過程中,我們只把它的前50多

位進行相加,不然存不下。

#include #include #include using namespace std;

const int n=10;

int f1[65],f2[65],f3[65];

class trie

};trie *root;

void insert(char *s,int ans)

}int find(char *s)

return count;

}void init()

for(int j=59;j>=0;j--)

if(f3[j])

int k=0;

for(int j=h;j>=0;j--)

insert(str,i);

if(h>55)

for(int j=0;j<60;j++)

f1[j]=f2[j];

for(int j=0;j<60;j++)

f2[j]=f3[j];

}}int main()

return 0;

}

HDU4099 斐波那契數列與字典樹

題目 revenge of fibonacci 題意 給出斐波那契數列的前k位,k不超過40,找出最小的正整數n,滿足f n 的前k位與給定數的前k位相同,斐波那契數列的項數不超過100000。解析 本題可以分為兩步 第一步就是預處理出100000項斐波那契數列的前40位,插入到字典樹中。第二步就是...

hdu4099 斐波那契數 字典樹

題意 給出乙個數字n,在斐波那契數列中找到乙個最小下標,滿足這個斐波那契數是以n為字首,輸出這個下標。思路 高精度 字典樹 1000000000000000進製。後來知道在斐波那契數很大的時候,只取前60位相加得到的前40位就是原斐波那契數的前40位。include include include ...

斐波那契數列 斐波那契數列python實現

斐波那契數列 fibonacci sequence 又稱 分割數列 因數學家列昂納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入,故又稱為 兔子數列 指的是這樣乙個數列 1 1 2 3 5 8 13 21 34 在數學上,斐波納契數列以如下被以遞推的方法定義 f 1 ...