給定矩陣$a_$,求$a^k$。
$k\leq 10^, n\leq 100$
這不是$\mathcal o(n^3 \lg k)$的矩陣乘法$+$快速冪板子嗎。。
這裡講一下矩陣乘法規則:
$$a\times b= c_&c_&\cdots&c_\\c_&c_&\cdots&c_\\\vdots&\vdots&\cdots&\vdots\\c_&c_&\cdots&c_\end}$$
其中$$c_=\sum_^n a_\times b_ $$
然後嘛。矩陣乘法滿足結合律。設$k$偶數,得
$$\begina^k&=a\times a\times\cdots\times a\\&=\left(a^}\right)\times\left(a^}\right)\end$$
所以。可以用快速冪做啦!
貼**:
#include using namespace std;typedef long long ll;
typedef array, 105> matrix;
const ll p = 1000000007;
ll n, k;
matrix a, i;
matrix matrixmul(const matrix &a, const matrix &b)
return ret;
}matrix powermod(ll k)
signed main()
matrix ret = powermod(k);
for (int i=1; i<=n; i++)
return 0;
}
洛谷 P3390 模板 矩陣快速冪
時空限制1000ms 128mb 矩陣快速冪 給定n n的矩陣a,求a k.第一行,n,k 第2至n 1行,每行n個數,第i 1行第j個數表示矩陣第i行第j列的元素 輸出a k 共n行,每行n個數,第i行第j個數表示矩陣第i行第j列的元素,每個元素模10 9 7 2 1 1 11 1 1 1 1 1...
模板 矩陣快速冪 洛谷 P3390
題目背景 矩陣快速冪 題目描述 給定 n times nn n 的矩陣 aa,求 a kak。輸入格式 第一行兩個整數 n,kn,k 接下來 nn 行,每行 nn 個整數,第 ii 行的第 jj 的數表示 a a i,j 輸出格式 輸出 a ka k共 nn 行,每行 nn 個數,第 ii 行第 j...
洛谷P3390 矩陣快速冪 模板
給定 n n 的矩陣 a 求ak 第一行兩個整數 n,k 接下來 n 行,每行 n 個整數,第 i 行的第 j 的數表示 a i,j 輸出ak 共 n 行,每行 n 個數,第 i 行第 j 個數表示 ak i,j 每個元素對109 7取模。輸入 1 211 1111 23輸出 1 111 112矩陣...