日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > hdu 4099 Revenge of Fibonacci(字典樹)

hdu 4099 Revenge of Fibonacci(字典樹)

來源:程序員人生   發布時間:2014-11-17 08:25:17 閱讀次數:2648次

題目鏈接:hdu 4099 Revenge of Fibonacci

題目大意:給定1個前綴,找到最小的n,保證f(n)包括前綴。f為斐波那契數列,要求n小于100000。

解題思路:大數加法,對100000之內的斐波那契數預處理出前綴,這里處理的時候只需要對前50位進行加法處理即

可,否則復雜度太高,由于查詢的長度不會超過40。然后建立字典樹,查詢則在字典樹上進行搜索。

#include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int maxn = 1e6 + 5; const int sigma_size = 10; struct Bign { int c, s[maxn]; Bign() {} void operator = (int a) { c = 0; memset(s, 0, sizeof(s)); while (a) { s[c++] = a % 10; a /= 10; } } void put() { for (int i = 1; i <= 40 && i <= c; i++) printf("%d", s[c-i]); printf(" "); } }num[3]; void add(const Bign& a, const Bign& b, Bign& ans) { int tmp = 0; ans.c = max(a.c, b.c); for (int i = max(min(a.c, b.c) - 50, 0); i < a.c || i < b.c; i++) { if (i < a.c) tmp += a.s[i]; if (i < b.c) tmp += b.s[i]; ans.s[i] = tmp % 10; tmp /= 10; } while (tmp) { ans.s[ans.c++] = tmp % 10; tmp /= 10; } } struct Tire { int sz, g[maxn * 10][sigma_size]; int val[maxn * 10]; void init(); int find(char* s); void insert(const Bign& a, int x); }T; void init () { num[0] = 1; num[1] = 1; T.init(); T.insert(num[0], 1); T.insert(num[1], 2); int t = 2; for (int i = 2; i < 100000; i++) { add(num[(t+1)%3], num[(t+2)%3], num[t]); T.insert(num[t], i + 1); t = (t + 1) % 3; } } int main () { init(); int cas; char s[60];; scanf("%d", &cas); for (int kcas = 1; kcas <= cas; kcas++) { scanf("%s", s); printf("Case #%d: %d ", kcas, T.find(s) - 1); } return 0; } void Tire::init() { sz = 1; val[0] = 0; memset(g[0], 0, sizeof(g[0])); } int Tire::find(char* s) { int n = strlen(s), u = 0; for (int i = 0; i < n; i++) { int v = s[i] - '0'; if (g[u][v] == 0) return 0; u = g[u][v]; } return val[u]; } void Tire::insert(const Bign& a, int x) { int u = 0; for (int i = 1; i <= 40 && i <= a.c; i++) { int v = a.s[a.c - i]; if (g[u][v] == 0) { val[sz] = x; memset(g[sz], 0, sizeof(g[sz])); g[u][v] = sz++; } u = g[u][v]; } }
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 免费看男女www网站入口在线 | 国产专区一区二区三区 | 91精品国产综合久久精品图片 | 国产日韩在线视频 | 第一色区 | 久久久久久久网站 | 日韩欧美精品一区二区三区 | 国产特级毛片 | 精品美女一区二区 | 欧美视频网站 | 99色婷婷| 日韩 欧美 中文 | 最新日韩精品 | 黄动漫在线观看 | 亚洲综合精品 | 欧美xxxx视频| 国产在线精品91国自产拍免费 | 亚洲国产精品成人女人久久 | 不卡在线视频 | 99视频在线看 | 亚洲欧美日韩在线 | 国产中文字幕一区 | 日韩高清国产一区在线 | 日本欧美三级 | 亚洲成人午夜电影 | 欧美日韩国产精品成人 | 欧美视频三区 | 成人免费在线观看 | 国产精品亚洲欧美 | 一本色道久久88综合亚洲精品ⅰ | 99精品一区二区 | 欧美日韩亚洲综合 | 婷婷日韩 | 国产99视频在线观看 | 亚洲精品国产视频 | 久久久久久久久综合 | 9久久精品 | 久久国产精品偷 | 高清不卡一区二区 | 在线观看麻豆视频 | 成人国产在线视频 |