為什麼要寫矩陣快速冪呢,因為快速冪我已經寫過了,只要過載一下運算子就好了(乙個字:懶),絕對不是我懶啊。
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複製
輸出 #1複製2 1
1 11 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 所以...