高斯消元求行列式(取模)
Posted thusloop
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高斯消元求行列式(取模)相关的知识,希望对你有一定的参考价值。
int gauss(int A[N][N],int n)
{
int ans = 1;
for(int i=1;i<=n;i++)
{
for(int j=i;j<=n;j++)
{
if(A[j][i])
{
for(int k=i;k<=n;k++) swap(A[i][k], A[j][k]);
if(i!=j) ans=-ans;
break;
}
}
if(!A[i][i]) return 0;
for(int j=i+1,iv=inv(A[i][i]);j<=n;j++)
{
int t=A[j][i]*iv%mod;
for(int k=i;k<=n;k++)
A[j][k]=(A[j][k]-t*A[i][k]%mod+mod)%mod;
}
ans = (ans*A[i][i]%mod+mod)%mod;
}
return ans;
}
int gauss(int a[N][N],int n)//模数可以不是质数
{
int res=1;
for(int i=1; i<=n; i++)
{
for(int j=i+1; j<=n; j++)
{
while(a[j][i])
{
int t=a[i][i]/a[j][i];
for(int k=i; k<=n; k++)
a[i][k]=(a[i][k]-t*a[j][k]+mod)%mod;
swap(a[i],a[j]);
res=-res;
}
}
res=(res*a[i][i])%mod;
}
return (res+mod)%mod;
}
以上是关于高斯消元求行列式(取模)的主要内容,如果未能解决你的问题,请参考以下文章
2017湘潭赛 A题 Determinant (高斯消元取模)