description
:設a是乙個n*n的矩陣,很多時候人們需要計算乙個矩陣的n次冪,當n足夠大時,計算量會變得很大,時間會變得很長,程式設計快速計算a^n。
input:matirx a
output:matrix b=a^n。
演算法描述:
設a 是乙個n*n的矩陣,輸入n,該演算法可以實現快速計算a^n。
首先需要實現乙個計算矩陣乘法的函式,該函式在演算法中為mat_mul(a,b)
表示a*b。
可以採用以下方法重新組織演算法:a^
n= a^((
n/2) * 2)a^
n== (a^(
n/2))^2
演算法 mat_power(a, n)
1. if n = 1
2. return a;
3. end if
4. temp = a^n/2; //mat_power(a,n/2)
5. temp2 = temp*temp ;// mat_mul(temp,temp)
6. if n % 2 = 0 // n是偶數
7. return temp2;
8. end if
9. esle
10. return temp2*a;
11. end
code:
#define n 3
#include
using
namespace std;
#include
#include
typedef
struct matrix
mat;// 矩陣型別
mat a; // 待求方冪的矩陣
int n; // 方冪
void initmat()
} } mat mat_mul(mat *a,mat *b)
} for (k = 0; k < n; k++)
} } return c;
} mat mat_power(mat *a,int n)
void print(mat *a)
} } void main()
快速冪計算(整數快速冪 矩陣快速冪)
快速冪計算 樸素演算法實現 1 ll get pow ll x,ll n 這裡的n要求不小於0,如果n小於0則令n n,並且最終返回1.0 ans即可 29 return ans 10 快速冪演算法 原理 二分 假設我們現在要計算pow x,n 那麼有當n為偶數時pow x,n pow x x,n ...
快速冪(矩陣快速冪)
求 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 ...