題目: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 ...