int gauss()
{
int equ=12,var=12;
int i,j,k;
int max_r,col;
ll ta,tb,lcm;
ll tmp;
for(k=0,col=0;k<equ && col<var;++k,++col)
{
max_r=k;
for(i=k+1;i<equ;++i)
if(abs(a[i][col])>abs(a[max_r][col])) max_r=i;
if(!a[max_r][col]) { --k; continue; }
if(k!=max_r)
for(j=col;j<var+1;++j) swap(a[k][j],a[max_r][j]);
for(i=k+1;i<equ;++i)
if(a[i][col])
{
lcm=getlcm(abs(a[i][col]),abs(a[k][col]));
ta=lcm/abs(a[i][col]);
tb=lcm/abs(a[k][col]);
if(a[i][col]*a[k][col]<0) tb=-tb;
for(j=col;j<var+1;++j) a[i][j]=((a[i][j]*ta-a[k][j]*tb)%mod+mod)%mod;
}
}
for(int i=k;i<equ;++i)
if(a[i][var]) return -1;
if(k<var) return var-k;
for(int i=var-1;i>=0;--i)
{
tmp=a[i][var];
for(j=i+1;j<var;++j)
if(a[i][j])
{
tmp-=a[i][j]*x[j];
tmp=(tmp%mod+mod)%mod;
}
x[i]=tmp*qmod(a[i][i],mod-2)%mod;
}
return 0;
}
模版借鉴博客地址:传送门