矩阵行列式计算
要求矩阵行列式,需要通过初等变换使得矩阵变为三角矩阵,然后对角线元素之积就是矩阵行列式的值。但是一般的初等变换可能导致浮点数的产生从而影响精度。因此这里使用辗转相除法进行初等变换。
本算法是将其转化为上三角矩阵。因此从第一行开始,处理第 i 行 时,要将第
(i+1)
i
对于第
i
aii
ret=−ret
http://blog.csdn.net/zhoufenqin/article/details/
本题多了个取模的部分。。。
#include
using namespace std; typedef long long ll; int n; ll mod; ll a[207][207]; ll getRet() { ll ret=1; for(int i=0;i
if(a[i][i]<
0) { ret=-ret;
for(
int k=i;k
for(
int j=i+
1;j
for(
int k=i;k
while(a[j][i]) {
if(a[j][i]<
0) { ret=-ret;
for(
int k=i;k
for(
int k=i;k
for(
int k=i;k
if(a[i][i]==
0)
return
0; ret=ret*a[i][i]%mod; }
return (ret+mod)%mod; }
int main() { ios::sync_with_stdio(
false);
cin.tie(
0);
while(
cin>>n>>mod) {
for(
int i=
0;i
for(
int j=
0;j
cin>>a[i][j];
cout<
return
0; }
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/227484.html原文链接:https://javaforall.net
