UVA - 11542(求模2剩余系的矩阵的秩)
来源:互联网 发布:西部网络达人秀开场舞 编辑:程序博客网 时间:2024/06/09 16:56
由于本题的所有数的素数分解都比500小,可以用每个数的素数拆分后对应前五百素数的个数(个数记为m),组成矩阵中的一列共n列(每个素数的个数模2,因为最终结果要求所选元素乘积的值对应每个素数的的个数都应该是偶数),那么解向量是一个有01构成的(每个01代表对应的元素选与不选),右乘上述矩阵没使得结果为一个0(由个m零构成)列向量。
那么只需求m*n矩阵的秩,那么便可以知道自由变元的个数x,解就是2^x-1
下面为求解矩阵的秩的代码(在模2剩余系下)
const int N = 510;typedef int matrix[N][N];void inline Swap(matrix& A,int n,int i,int j){ rep(k,n) swap(A[i][k],A[j][k]);}int rank(matrix& A,int m,int n){ int lim=min(m,n); int i=0,j=0; while(i<m&&j<n){ int r=i; for(int k=i;k<m;k++) if(A[k][j]){r=k; break;} if(A[r][j]){ Swap(A,n,r,i); for(int k=i+1;k<m;k++) if(A[k][j]) for(int l=j;l<n;l++) A[k][l]^=A[i][l]; i++; } j++; } return i;}
在说明一点,再求矩阵值的过程中不需要用增光矩阵,而是用系数矩阵就可以了。因为并不求解方程,而只是求解矩阵的秩。
该方法是化矩阵为阶梯形矩阵(
(1) 若矩阵A有零行,则零行在非零行下方。
(2)各非零行的左起第一个元素的列序数从上到下严格递增。
)
0 0
- UVA - 11542(求模2剩余系的矩阵的秩)
- UVA 11542 Square(求增广矩阵的秩)
- 求矩阵的秩
- UVA - 108 Maximum Sum 求子矩阵的最大和
- Uva11542 求矩阵的秩
- rank--求矩阵的秩
- C++ 求矩阵的秩
- UVA - 10827 Maximum sum on a torus 求循环矩阵的最大子矩阵
- uva 11149 矩阵快速幂 求矩阵1-n次幂的和
- 求矩阵的逆
- 矩阵的求逆
- 求矩阵的逆
- 矩阵的求逆
- 求矩阵的行列式
- 求矩阵的逆
- 混合颜料(求矩阵的秩问题)
- matlab求矩阵、向量的模
- 求最大和的2*2矩阵
- 黑马程序员_java学习日记num15
- JavaScript高级程序设计,对书中一些不熟悉的地方做得笔记
- class
- js 获取浏览器高度和宽度值(多浏览器)
- Diego 下一代的Cloud Foundry运行时
- UVA - 11542(求模2剩余系的矩阵的秩)
- 从Code Review 谈如何做技术
- POJ - 1159 - Palindrome (LCS + 优化)
- ZOJ - 2107 Quoit Design [分治]
- momentum 深度学习
- 两列布局代码示例
- 在MFC中调用DLL文件(只有DLL,无lib,无头文件)
- java 调用.net webservice
- 二叉树三种遍历方式