矩陣快速冪(以斐波那契數列為例)

2021-08-03 04:07:42 字數 1337 閱讀 3705

【問題描述】

小 w 發現了乙個神奇的數列:

() = ( − 1) + ( − 2) { ≥ 3, (1) = 1, (2) = 1} ,這就是著名的 fibonacci

sequence = =!。

眾所周知,小 m 的數學超級超級好,於是給小 w 出了一道題:

給小 w 兩個數 x,y,其中 x ≤ y≤ 2^31−1。

小 w 任務就是求出 fibonacci 數列第 x~y 項的和除以 10000 的餘數。

然而小 w 是數學戰五渣,於是只能把這個任務交給機智的你啦。

【輸入格式】

第一行乙個整數 t,表示資料組數。

接下來 t 行,每行兩個數 x,y,意義如題所述。

【輸出格式】

t 行,每行是乙個詢問的答案。

【輸入輸出樣例】

fibonacci.in fibonacci.out

2 1 5

127 255

12 5976

【資料規模】

對於 80%的資料:t=1,y<=10^6

對於 100%的資料:t<=1000,y<=2^31-1

這道題就是要求sum[i];

如果直接算只可以得80』(也不少了)

利用矩陣乘法

這時如果簡單的b乘b乘b…. 時間複雜度不會降低

所以我們利用二進位制的思想

矩陣快速冪 斐波那契數列

time limit 1000 ms memory limit 128 mb 通過小l的不懈努力,他即將成為大神啦,他登上了大神專屬的頒獎臺。在頒獎台上,他即將領取代表著大神的無限榮譽的勳章。小l走上頒獎台後,在台上發現了乙個製作精美的盒子。榮譽勳章就在盒子裡面。小l發現這個盒子被上了鎖,在這個盒子...

矩陣快速冪 斐波那契數列

先來實現乙個矩陣相乘的函式吧。const int mod 10000 struct mat mat mat mul mat x,mat y 實現兩個矩陣相乘,返回的還是乙個矩陣。return res 其實和普通快速冪類似,只不過這裡需要得到的是乙個矩陣下面來實現乙個矩陣快速冪 int pow int...

斐波那契數列 矩陣快速冪

輸入格式 輸入乙個正整數n 1 n 1e18 輸出格式 輸出乙個數,數列的第n項 輸入樣例1 1輸出樣例1 1輸入樣例2 3輸出樣例2 2 一 矩陣相乘 若a為n k矩陣,b為k m矩陣,則它們的乘積將是乙個n m矩陣。兩個矩陣能相乘的前提條件為前乙個矩陣的列數等於後乙個矩陣的行數。兩矩陣相乘的 如...