矩陣方冪快速計算

2021-05-25 23:06:01 字數 1119 閱讀 5403

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 ...