POJ 3233 Matrix Power Series 【矩阵快速幂,矩阵加速】
2013-08-21 11:11
483 查看
| A+A^2+A^3+…Ak | |A A| (k-1)次方 | A | | | = | | | | | E | |0 E| | E |
A是输入的矩阵
#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>using namespace std;#define N 66int n, a, Mod;//c = a*bvoid Multi(int a[], int b[], int c[]) {for (int i=0; i<n; i++)for (int j=0; j<n; j++) {c[i][j] = 0;for (int k=0; k<n; k++)c[i][j] = (c[i][j] + a[i][k]*b[k][j]) % Mod;}}//d = svoid copy(int d[], int s[]) {for (int i=0; i<n; i++) for (int j=0; j<n; j++)d[i][j] = s[i][j];}//a = a^k % Modvoid PowerMod(int a[], int b) {int t, ret;for (int i=0; i<n; i++) ret[i][i] = 1;while (b) {if (b & 1) { Multi(ret, a, t); copy(ret, t); }Multi(a, a, t); copy(a, t);b >>= 1;}copy(a, ret);}void print(int x[], int y) {for (int i=0; i<y; i++) {printf("%d", x[i][0]);for (int j=1; j<y; j++) printf(" %d", x[i][j]);printf("\n");}}int main() {int k;scanf("%d%d%d", &n, &k, &Mod);memset(a, 0, sizeof(a));for (int i=0; i<n; i++) for (int j=0; j<n; j++) scanf("%d", &a[i][j]);if (k > 1) {int m = n, b, c;memset(b, 0, sizeof(b));for (int i=0; i<n; i++) for (int j=0; j<n; j++) {a[i][j+n] = a[i][j];a[i+n][i+n] = 1;b[i][j] = a[i][j];b[i+n][i] = 1;}n = n*2;PowerMod(a, k-1);memset(c, 0, sizeof(c));for (int i=0; i<n; i++)for (int j=0; j<m; j++)for (int k=0; k<n; k++)c[i][j] = (c[i][j] + a[i][k]*b[k][j]) % Mod;print(c, n/2);} else print(a, n);return 0;}
相关文章推荐
- POJ 3233 Matrix Power Series 矩阵快速幂+二分求和
- POJ 3233 Matrix Power Series (矩阵快速幂)
- POJ 3233 Matrix Power Series (矩阵快速幂 + 二分)
- POJ 3233-Matrix Power Series(矩阵快速幂+二分求矩阵和)
- POJ 3233 Matrix Power Series (矩阵快速幂+二分求解)
- POJ 3233 Matrix Power Series 矩阵快速幂 + 二分法
- POJ 3233 Matrix Power Series 矩阵快速幂
- POJ 3233 Matrix Power Series 矩阵快速幂+二分
- 文章标题 POJ : 3233 Matrix Power Series (矩阵快速幂+求等比矩阵的和)
- POJ 3233 Matrix Power Series (矩阵快速幂和)
- POJ 3233 Matrix Power Series (矩阵快速幂 + 二分思想)
- POJ 3233 Matrix Power Series(矩阵快速幂)
- POJ 3233 Matrix Power Series(矩阵快速幂)
- POJ 3233:Matrix Power Series 矩阵快速幂 乘积
- poj 3233 Matrix Power Series 矩阵快速幂
- poj 3233 Matrix Power Series(矩阵快速幂)
- POJ 3233:Matrix Power Series 矩阵快速幂 乘积
- poj 3233 Matrix Power Series - 矩阵快速幂
- poj 3233 Matrix Power Series 矩阵快速幂
- poj 3233 Matrix Power Series(矩阵快速幂+分治)