矩陣快速冪 模板與簡單講解

2022-05-07 04:24:10 字數 805 閱讀 7172

模板

快速冪模板

1

void solve(matrix t,long

longo)2

1617 o >>= 1;18

19 t =mul(t,t);20}

2122

long

long res = 0;23

24for (int i = 0;i < d;i++)

25 res = (res + e.a[0][i] * f[d-i-1]) %m;

2627 printf("

%lld\n

",res);

28 }

矩陣相乘**

1

struct

matrix2;

56matrix mul(matrix x,matrix y)719

}2021return

c;22 }

簡單講解:

矩陣快速冪,就只是把快速冪中的數改成了矩陣,蘭兒其實還是有不同的地方,因為快速冪一般用的是遞迴實現,但是lrj大大說矩陣快速冪還是用迭代實現比較好。

舉乙個例子,a^15,可以寫成(a^8) * (a^4) * (a^2) * (a^1) 的形式,可以看到8,4,2,1都是2的次冪,所以我們就可以方便的運用位運算。

15:1111,那麼每次這個數字右移一位,那麼矩陣就平方一次,然後遇到當前的最後一位111k,k & 1 == 1,這個時候結果矩陣就要乘以當前的用於運算的矩陣。

矩陣預算也是挺好理解的,用手算模擬一下就可以了。

快速冪與矩陣快速冪模板

int ksm int a,int b return ans 矩陣快速冪簡單來說就是快速冪和矩陣乘法的結合 矩陣快速冪的模板 以斐波那契數列為模板 include using namespace std struct node node jzc node a,node b void jz ksm i...

快速冪與矩陣快速冪簡記 模板套用

模板 typedef long long ll ll power ll a,int b,int p return ans 矩陣快速冪,矩陣快速冪主要是用來求一些遞推式 的問題的就比如說斐波那契陣列,使用矩陣快速冪的方法時間複雜度就可以優化到相當低的程度1.從題目中找出對應的遞推式2.很重要 求出公比...

矩陣快速冪模板

剛學了矩陣快速冪,花了點時間把之前的 修改一下寫成了矩陣類,就當做模板了.話不多說下面貼 首先是標頭檔案和巨集定義什麼的 include include include using namespace std define inf 1000000000 define maxm 20 define m...