矩陣快速冪

2022-09-20 18:24:10 字數 1076 閱讀 9688

學快速冪時,做到了矩陣快速冪,就學習了一下矩陣乘法,今天又碰到了乙個關於矩陣乘法的問題,就順便整理複習一下。

快速冪

快速冪顧名思義就是讓乘方運算更加快速的演算法,n^x這樣的乘方運算本來是要n*n*n*……*n(共x個n)這樣乙個乙個運算,但快速冪的思想是將n分成2的多次方和,如2^34=2^32*2^2,呈現方式是通過二分,如2^34=(2^17)^2=(2^16*2)^2=((((2^2)^2)^2)^2*2)^2

long

long ksm(int n,int

x)

矩陣乘法

矩陣乘法就是乙個m*n的矩陣a乘乙個n*p的矩陣b得到乙個m*p的矩陣c

這樣看矩陣乘法只有結合律,沒有交換律

c[i][j]=a[i][1]*b[1][j]+a[i][2]*b[2][j]+……+a[i][n]*b[n][j]

例如:a=|1 2 3|

|4 5 6|

b=|1 5|

|3 7|

|2 4|

c=a*b=|1*1+2*3+3*2 1*5+2*7+3*4|=|13 31|

|1*4+3*5+2*6 4*5+5*7+6*4|  |31 79|

for(int i=1;i<=m;i++)

}}

矩陣快速冪

矩陣快速冪就是矩陣乘法和快速冪的結合

int ans[101][101

];void jzksm(int a[101][101],int

n) }

return

; }

jzksm(a,n/2

);

int t[101][101

];

for(int i=1;i<=n;i++)}}

for(int i=1;i<=n;i++)

}if(n%2==1

) }

}for(int i=1;i<=n;i++)}}

}

快速冪(矩陣快速冪)

求 3 0 3 1 3 n mod 1000000007 input 輸入乙個數n 0 n 10 9 output 輸出 計算結果 sample input 3sample output 40 分析 利用等比數列的求和公式得所求和是 3 n 1 1 2,如果暴力求3 n 1 會超時,這裡引入快速冪來...

快速冪 矩陣快速冪

快速冪 正常情況下求乙個數的冪時間複雜度為o n 而快速冪能把時間複雜度降到o logn 舉個例子 求5的13次方 思想首先把13化為二進位制 1101,即13 1101 8 1 4 1 2 0 1 1 即5 13 58 1 54 1 52 0 5 1 15 5 8 1 5 4 1 5 2 0 5 ...

快速冪 矩陣快速冪

快速冪 我們求a ba b ab最直接的方法就是把a乘b次這樣的話複雜度就是o n o n o n 但是在比賽時面對1e9的資料時還是會輕鬆超時的,此時就需要一種更快的乘法來幫助我們 我們把b拆成二進位制的形式得到a ba b ab a 10.01 a a1 0.01此時對b分解得到的序列10.01...