思路:
常見演算法時矩陣快速冪,但事實上這題可以不需要矩陣快速冪。
設斐波那契數列為$f$,觀察規律可以發現:
當$n$為偶數時,$f_n=(f_\times 2+f_n)\times f_n$;
當$m$為奇數時,$f_n=f_^2+f_n^2$。
這樣只要用乙個map記錄已經計算過的fibonacci數,遞迴求得答案即可。
再用乙個hash_map跑得和標算一樣快(0ms),而且記憶體更小。
1 #include2 #include3const
long
long mod=1000000007
;4 __gnu_cxx::hash_mapm;
5 inline long
long sqr(const
long
long
x) 8
long
long fibonacci(const
long
long
n) 14
intmain()
洛谷1962 斐波那契數列
f 1 1 f 2 1 f n f n 1 f n 2 n 2 且 n 為整數 請你求出 f n mod 1000000007 的值。第 1 行 乙個整數 n 第 1 行 f n mod 1000000007 的值 輸入樣例 1 輸出樣例 1 輸入樣例 2 輸出樣例 2 對於 60 的資料 n 92...
洛谷P1962 斐波那契數列
f 1 1 f 2 1 f n f n 1 f n 2 n 2 且 n 為整數 請你求出 f n mod 1000000007 的值。輸入格式 第 1 行 乙個整數 n 輸出格式 第 1 行 f n mod 1000000007 的值 輸入樣例 1 5 輸出樣例 1 5 輸入樣例 2 10 輸出樣例...
洛谷P1962 斐波那契數列
f 1 1 f 2 1 f n f n 1 f n 2 n 2 且 n 為整數 請你求出 f n mod 1000000007 的值。輸入格式 第 1 行 乙個整數 n 輸出格式 第 1 行 f n mod 1000000007 的值 輸入樣例 1 5 輸出樣例 1 5 輸入樣例 2 10 輸出樣例...