【SPOJ-MIFF】Matrix inverse【高斯消元】
来源:互联网 发布:杨百万炒股软件 编辑:程序博客网 时间:2024/06/05 12:03
题意:
给出一个矩阵,求它的逆矩阵。
算是模板了吧。
经典方法:
左边写原矩阵,右边写单位矩阵,然后把左边高斯消元成单位矩阵,右边就是逆元。
#include <cstdio>#include <cmath>#include <algorithm>using namespace std;const int maxn = 205;int n, m, p, a[maxn][maxn];inline int qpow(int x, int n) {int ans = 1;for(int t = x; n; n >>= 1, t = (t * t) % p) if(n & 1) ans = (ans * t) % p;return ans;}bool gauss() {for(int i = 1; i <= n; i++) {int j;for(j = i; j <= n && !a[j][i]; j++);if(j > n) return 0;for(int k = 1; k <= m; k++) swap(a[j][k], a[i][k]);int t = qpow(a[i][i], p - 2);for(int k = 1; k <= m; k++) a[i][k]= (a[i][k] * t) % p;for(j = 1; j <= n; j++) if(j != i && a[j][i] != 0) {int t = qpow(a[j][i], p - 2);for(int k = 1; k <= m; k++) a[j][k] = (a[j][k] * t - a[i][k] + p) % p;}}for(int i = 1; i <= n; i++) {int t = qpow(a[i][i], p - 2);for (int k = 1 ; k <= m ; k++) a[i][k] = (a[i][k] * t) % p;}return 1;}int main() {while(1) {scanf("%d%d", &n, &p);if(n == 0 && p == 0) break;for(int i = 1; i <= n; i++) for(int j = 1; j <= n; j++) scanf("%d", &a[i][j]);m = n << 1;for(int i = 1; i <= n; i++)for(int j = n + 1; j <= m; j++) a[i][j] = (i + n == j);if(gauss()) {for(int i = 1; i <= n; i++) {for(int j = n + 1; j <= m; j++) printf("%d ", a[i][j]);printf("\n");}} else printf("singular\n");}return 0;}
0 0
- 【SPOJ-MIFF】Matrix inverse【高斯消元】
- Matrix inverse
- Inverse matrix, left-inverse and right inverse
- Inverse transpose matrix
- SPOJ 1029 Matrix Summation
- 【SPOJ-HIGH】Highways【高斯消元】【Matrix Tree定理】【行列式】
- spoj 1029. Matrix Summation(二维树状数组)
- Hibernate中cascade与inverse属性详解(二)-Matrix
- Derivative of trace of matrix including inverse and transposition
- 逆矩阵(inverse matrix)的概念及其意义
- inverse
- inverse
- inverse
- Inverse
- inverse
- inverse
- inverse
- inverse
- 2.7-1 Android Studio 相关的配置信息,未整理
- Android使用java的Math.Random获取随机色值
- 快速掌握Lua 5.3 —— "table"库
- UML--状态图、活动图
- svn checkout单个文件(refers to a file, not a directory)
- 【SPOJ-MIFF】Matrix inverse【高斯消元】
- 动态加载JavaScript文件
- mysql创建函数示例
- 对任务执行目标数据
- Android闪光灯开关
- nyoj--496--巡回赛(拓扑排序)
- MySQL5.6基于GTID复制配置
- 获取某路径下所有文件
- C#设计模式08-组合模式