矩陣快速冪
阿新 • • 發佈:2020-08-16
設A為P×M的矩陣,B為M×Q的矩陣,設矩陣C為矩陣A與B的乘積
在矩陣乘法中,C矩陣的第i行第j列的數,就是由矩陣A第i行M個數與矩陣B第j列M個數分別相乘再相加得到的。
struct Matrix { ll a[5][5]; Matrix() { memset(a, 0, sizeof a); } // Matrix operator*(const Matrix &b) const { Matrix res; for (int i = 1; i <= 4; ++i) //長度為4的矩陣相乘 for(int j = 1; j <= 4; ++j) for (int k = 1; k <= 4; ++k) res.a[i][j] = (res.a[i][j] + a[i][k] * b.a[k][j]) % mod; return res; } } ans, base; void qpow(int b) { //快速冪 while (b) { if (b & 1) ans = ans * base; base = base * base; b>>= 1; } }