hdu4099 斐波那契數 字典樹

2021-07-05 18:22:11 字數 1005 閱讀 3143

題意:

給出乙個數字n,在斐波那契數列中找到乙個最小下標,滿足這個斐波那契數是以n為字首,輸出這個下標。

思路:

高精度+字典樹+1000000000000000進製。後來知道在斐波那契數很大的時候,只取前60位相加得到的前40位就是原斐波那契數的前40位。

**:

#include #include #include #include using namespace std;

typedef long long ll;

const ll mod = 1000000000000000;

const int m = 2000;

ll b[10][m + 10];

const int maxn = 10000005;

int tire[maxn][11];

int flag[maxn];

int tot;

void init2()

void add(string s, int rt, int nn)

rt = tire[rt][x];

}}int cal(string s, int rt)

rt = tire[rt][x];

}return flag[rt];

}void print(int n, int nn) else

} for(int j = 0; str[j]; j++)

} if(f1) break;

} add(s, 0, nn);

//cout << s << " " << nn << endl;

}int a(int x)

void init()

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

print(now,nn++); }}

int main()

}

HDU4099 斐波那契數列與字典樹

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

HDU4099 斐波那契數列與字典樹

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

HDU 4786 斐波那契生成樹

這道題的意思是給你一些邊,某些邊被染成黑色,還有一些邊被染成白色,現在問你沒有乙個生成樹他的白邊的數量是斐波那契數列中的數,我們可以先選黑邊得到最最小的白邊數,先選白邊得到最大的白邊數,然後看看這個區間有沒有斐波那契數即可,注意沒有生成樹時的情況。如下 include include include...