丑陋的AC代码
for (int c=1; c<=n; c++){
int tc = c;
while(tc<=n && b[tc][c]==0) tc++;
if (tc>n){flag=false;break;}
if (tc!=c) swap(b[c],b[tc]);
if (b[c][c]<0)for (int j=1; j<=n+1; j++){
b[c][j]*=-1;
}
...
本人使用了gcd的高斯消元,但substack0#3为什么要这样才能过?
WA了好多发,实在想不明白QAQ
消元过程如下:
for (int i=1; i<=n; i++){
if (i==c || b[i][c]==0) continue;
ll gc = gcd(abs(b[i][c]),abs(b[c][c]));
ll x = b[i][c]/gc;
ll y = b[c][c]/gc;
for (int j=c; j<=n+1; j++){
b[i][j]=b[i][j]*y-x*b[c][j];
}
}
可能我太菜了,求dalao解答 ???
题外话,这题通过率好低啊