矩阵乘法的应用
2010-11-02 12:31
225 查看
一、学习资料
Blog1, Blog2,
论文1 -> 俞华程《矩阵乘法在信息学中的应用》
二、题目
1. hdoj-1575
描述:求矩阵A^k的主对角线元素和 (mod 9973).
PS: 入门题[二分求矩阵幂]
代码
Blog1, Blog2,
论文1 -> 俞华程《矩阵乘法在信息学中的应用》
二、题目
1. hdoj-1575
描述:求矩阵A^k的主对角线元素和 (mod 9973).
PS: 入门题[二分求矩阵幂]
代码
#include <stdio.h> #include <string.h> #define NL 30 int n, md; class Matrix { public: int v[NL][NL]; Matrix() { memset(v, 0, sizeof (v)); } Matrix & operator =(const Matrix &m) { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) this->v[i][j] = m.v[i][j]; } return *this; } Matrix Multiply(Matrix m) { Matrix m1; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { for (int k = 0; k < n; k++) { m1.v[i][j] += v[i][k] * m.v[k][j]; m1.v[i][j] %= md; } } } return m1; } Matrix Add(Matrix m) { Matrix m1; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { m1.v[i][j] = (v[i][j] + m.v[i][j]) % md; } } return m1; } Matrix Pow(int k) { Matrix m1, m0; m1 = m0 = *this; k--; while (k > 0) { if (k & 1) m1 = m1.Multiply(m0); m0 = m0.Multiply(m0); k >>= 1; } return m1; } void Print() { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) printf("%d ", v[i][j]); printf("\n"); } } }; Matrix m0, m1; Matrix cal(int k) { Matrix m; if (k == 1) return m0; if (k & 1) { Matrix mx = cal(k / 2); Matrix my = m0.Pow(k / 2 + 1); return mx.Add(mx.Multiply(my).Add(my)); } else { Matrix mx = cal(k / 2); Matrix my = m0.Pow(k / 2); return mx.Add(my.Multiply(mx)); } } int main() { int k; scanf("%d%d%d", &n, &k, &md); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) scanf("%d", &m0.v[i][j]), m0.v[i][j] %= md; } m1 = cal(k); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { printf("%d%c", m1.v[i][j], (j == n - 1) ? '\n' : ' '); } } return 0; }
相关文章推荐
- 【矩阵乘法经典应用】【ZOJ3497】【Mistwa】
- 【矩阵乘法经典应用】【ZOJ3497】【Mistwa】
- 矩阵乘法的应用(hdu1575,hdu1588,poj3070,poj3233,poj3613)
- 矩阵的运算的乘法次数(栈的模拟应用)
- 矩阵乘法的应用
- 矩阵乘法在2D图形中应用
- stack应用--矩阵乘法次数计算
- HDU 1082.Matrix Chain Multiplication【栈的应用+矩阵乘法规则】【1月4】
- 引入矩阵乘法的主要原因来源于线性方程组的应用
- 矩阵乘法景点应用 - 求递推式
- BestCoder Round #80 Sequence(HDU5667) 费马小丁里和矩阵乘法的应用
- [发布] 矩阵乘法及其对于编程求斐波那契数列的某一项的应用
- 矩阵乘法经典应用之置换
- (算法学习)矩阵乘法及其应用
- 【转载】ACM中矩阵乘法的应用
- 脉动阵列在二维矩阵乘法及卷积运算中的应用
- p2663_Tri Tilling(矩阵乘法应用)
- hdu 2157 How many ways??(矩阵乘法经典应用)
- 【数据结构与算法】数组应用1:矩阵乘法(Java实现)
- 矩阵乘法与应用