資料結構與演算法 09 矩陣快速冪

2022-06-05 12:00:11 字數 979 閱讀 8128

為什麼要寫矩陣快速冪呢,因為快速冪我已經寫過了,只要過載一下運算子就好了(乙個字:懶),絕對不是我懶啊。

struct matrix ;

// 此處傳reference

matrix operator* (const matrix& x, const matrix& y)

return r;

}

矩陣快速冪

給定 n\times nn×n 的矩陣 aa,求 a^ka**k。

第一行兩個整數 n,kn,k 接下來 nn 行,每行 nn 個整數,第 ii 行的第 jj 的數表示 a_a**i,j。

輸出 a^ka**k

共 nn 行,每行 nn 個數,第 ii 行第 jj 個數表示 (a^k)_(a**k)i,j,每個元素對 10^9+7109+7 取模。

輸入 #1複製

2 1

1 11 1

輸出 #1複製

1 1

1 1

【資料範圍】

對於 100%100% 的資料:1\le n \le 1001≤n≤100,0 \le k \le 10^0≤k≤1012, |a_| \le 1000∣a**i,j​∣≤1000

#include #define mod 1000000007

struct matrix a, ans;

long long n, k;

matrix operator* (const matrix& x, const matrix& y)

return r;

}int main()

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

return 0;

}

python資料結構 快速冪 矩陣快速冪 應用

1 快速冪 遞迴法 class solution def mypow self,x float,n int float def quickmul n if n 0 return 1.0 y quickmul n 2 return y y if n 2 0 else y y x return quic...

資料結構筆記 快速冪演算法

快速冪的目的就是做到快速求冪,假設我們要求a b,按照樸素演算法就是把a連乘b次,時間複雜度是o b 為o n 級別,快速冪能做到o logn 原理如下 假設我們要求a b,那麼其實b是可以拆成二進位制的,該二進位制數第i位的權為2 i 1 例如當b 11時 a11 a 2 0 2 1 2 3 11...

快速冪與矩陣快速冪

1 結論 a b mod c a mod c b mod c mod c a b c a c b c 2 先這樣理解一下 int ans 1 a a c if b 2 1 ans ans a c k a a c for i 0 i return ans c 我們把式子轉化成k b 2 modc 所以...