矩陣乘法:
矩陣 a,b 的大小分別為 a x b 和 b x c
設 c = ab,則 c 的大小為 a x c
一般我們只考慮方陣,即 a、b 的大小都是 n x n
對於矩陣快速冪,記個板子就好。推薦封裝成乙個結構體並且過載乘法運算子。
問題引入:
給定矩陣 a,請快速計算出 a^n(n 個矩陣 a 相乘)的結果,輸出的每個數都 % p
所有的矩陣快速冪都是只需找到求解的線性遞推關係即可。就是類似這樣的等式:
如果上述的明白了,那麼
例題:q老師 對數列有一種非同一般的熱愛,尤其是優美的斐波那契數列。
這一天,q老師 為了增強大家對於斐波那契數列的理解,決定在斐波那契的基礎上建立乙個新的數列 f(x) 來考一考大家。數列 f(x) 定義如下:
當 x < 10 時,f(x) = x;
當 x ≥ 10 時,f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + …… + a9 * f(x-10),ai 只能為 0 或 1。
q老師 將給定 a0~a9,以及兩個正整數 k m,詢問 f(k) % m 的數值大小。
聰明的你能通過 q老師 的考驗嗎?
input
輸出檔案包含多組測試用例,每組測試用例格式如下:
第一行給定兩個正整數 k m。(k < 2e9, m < 1e5)
第二行給定十個整數,分別表示 a0~a9。
output
對於每一組測試用例輸出一行,表示 f(k) % m 的數值大小。
sample input
10 9999
1 1 1 1 1 1 1 1 1 1
20 500
1 0 1 0 1 0 1 0 1 0
sample output
45104
經過分析不難得出所需求的是陣列:
的冪次方。
ac**:
#include
#include
#include
using
namespace std;
int k,mod;
int a[15]
;struct matrix}}
return ret;
}matrix()
};matrix solve
(matrix a,
int x)
return ret;
}int
main()
return0;
}
矩陣快速冪 例題 模板
觀察上式可以得出下面等價方程組 很明顯可以構造乙個矩陣 構造矩陣為 將左邊的矩陣乘n 1次 include using namespace std typedef long long llt const int cube size 3 矩陣大小 struct cube 單位矩陣 cube unitc...
矩陣快速冪(模板 例題)
矩陣快速冪推導過程 矩陣快速冪求解數列第n項的關鍵在於計算係數矩陣a。之後就是套模板了。模板 求解斐波那契數列第n項 include include define ll long long define mod 2147493647 using namespace std struct mat ma...
矩陣快速冪模板 例題
矩陣快速冪這個演算法,理解起來很容易,但是我之前自己寫的 有bug,也是因為上課不聽課,對形參和實參沒理解,平常用的都是全域性變數,是不是實參影響不大,這次定義乙個結構體的矩陣,矩陣需要初始化為0,然後,因為形參和實參沒怎麼理解,導致輸出的答案差異很大,前提是矩陣快速冪,矩陣需要初始化陣列,並不會預...