没有精度问题,但多了个log,不明白的话手动模拟一下
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]-1ll*a[j][k]*t)%p;
for(int k=i;k<n;k++) swap(a[i][k],a[j][k]);
ret=-ret;
}
if(a[i][i]==0)
return 0;
ret=ret*a[i][i]%p;
}