學快速冪時,做到了矩陣快速冪,就學習了一下矩陣乘法,今天又碰到了乙個關於矩陣乘法的問題,就順便整理複習一下。
快速冪
快速冪顧名思義就是讓乘方運算更加快速的演算法,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
longlong 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...