快速矩阵幂POJ3233
来源:互联网 发布:cg窝怎么样 知乎 编辑:程序博客网 时间:2024/04/29 19:15
给出n,k,m;n为矩阵A的行数和列数。然后输入矩阵A
求A^1+A^2+...A^k 全部mod m的矩阵。
#include<cstdio>int n,mod, k;struct Matrix{ int m[32][32];}E, Z;Matrix Mut(Matrix A, Matrix B){ Matrix ans; for (int i = 0; i<n; i++) for (int j = 0; j<n; j++) { ans.m[i][j] = 0; for (int k = 0; k<n; k++) { ans.m[i][j] += ((A.m[i][k])*(B.m[k][j])); ans.m[i][j] %= mod; } } return ans;}Matrix Add(Matrix A, Matrix B){ Matrix ans; for (int i = 0; i<n; i++) for (int j = 0; j<n; j++) ans.m[i][j] = (A.m[i][j] + B.m[i][j]) % mod; return ans;}Matrix Pow(Matrix A, int b){ Matrix t = A, ans = E; while (b) { if (b % 2) ans = Mut(ans, t); b /= 2; t = Mut(t, t); } return ans;}Matrix solve(Matrix A, int b){ if (b == 0) return E; else if (b == 1) return A; else if (b == 2) return Add(A, Mut(A, A)); else if (b % 2 == 1) return Add(Pow(A, b), solve(A, b - 1)); else if (b % 2 == 0) { Matrix ans = solve(A, b / 2); Matrix C = Pow(A, b / 2); Matrix B = Mut(ans, C); return Add(B, ans); }}int main(){ // freopen("in.txt", "r", stdin);Matrix A; while(scanf("%d %d %d",&n,&k,&mod)!=EOF) { for (int i = 0; i<n; i++) for (int j = 0; j<n; j++) E.m[i][j] = (i == j);for(int i=0;i<n;i++)for(int j=0;j<n;j++)scanf("%d",&A.m[i][j]); Matrix ans = solve(A, k);for(int i=0;i<n;i++){for(int j=0;j<n;j++){printf("%d",ans.m[i][j]);if(j==n-1)printf("\n");else printf(" ");}} } return 0;}
0 0
- POJ3233矩阵快速幂
- 矩阵快速幂--poj3233
- 快速矩阵幂POJ3233
- POJ3233 矩阵快速幂
- poj3233(矩阵快速幂)
- poj3233矩阵快速幂运算
- 【矩阵快速幂】poj3233 Matrix Power Series
- poj3233 - Matrix Power Series-矩阵快速幂
- poj3233 Matrix Power Series,矩阵快速幂
- POJ3233 Matrix Power Series【矩阵快速幂】
- poj3233 Matrix Power Series(矩阵快速幂)
- 【poj3233】Matrix Power Series 矩阵+快速幂
- poj3233经典二分矩阵快速幂
- Matrix Power Series poj3233矩阵快速幂
- [poj3233] Matrix Power Series 矩阵快速幂
- POJ3233(递推+矩阵快速幂)
- POJ3233 矩阵幂求和
- poj3233(矩阵幂)
- Android 通知栏Notification全面学习
- (完整版)C++内存操作类
- python学习:作用域
- TCP/IP 详解卷一 - 第1章 概述
- 网络流基础
- 快速矩阵幂POJ3233
- AndroidTextview关键字高亮显示
- UVa 818 - Cutting Chains(枚举子集+回溯+DFS)
- 我的第一篇博客
- 【翻譯】android developer api指南翻譯 location and maps
- [leetcode] 97 Interleaving String
- STL系列--- 随机三趣题——随机重排,文件中随机取一行,生成N个随机数。
- 我为什么开始写博客
- POJ 3087Shuffle'm Up