double型 fabs
double a[maxn][maxn] , x[maxn] ; //a[i][j] 系数矩阵 , a[i][n+1] = y[i] , x解
int n ; //n个方程
void guass(){
int i , j , k ;
double sum , rate ;
for(k = 1 ; k < n ; k++){
for(i = j = k ; i <= n ; i++) j = fabs(a[i][k]) > fabs(a[j][k]) ? i : j ;
for(i = k ; i <= n+1 ; i++) swap(a[j][i] , a[k][i]) ;
for(i = k+1 ; i <= n ; i++)
for(rate = a[i][k]/a[k][k] , j = k ; j <= n+1 ; j++)
a[i][j] -= a[k][j]*rate ;
}
for(i = n ; i >= 1 ; i--){
for(sum = 0 , j = i+1 ; j <= n ; sum += a[i][j]*x[j],j++) ;
x[i] = (a[i][n+1] - sum)/a[i][i] ;
}
}
double Fix(double x){ // 将 -0.000 变成 0.00 ,结果输出Fix(x[])
if(fabs(x) < 1e-4) return 0 ;
return x ;
}
Xor 的高斯消元
int a[maxn][maxn] , x[maxn] ;
int n ;
void guass(){
int i , j , k ;
double sum , rate ;
for(k = 1 ; k < n ; k++){
for(i = k ; i <= n ; i++) if(a[i][k]){ j = i ; break ;}
for(i = k ; i <= n+1 ; i++) swap(a[j][i] , a[k][i]) ;
for(i = k+1 ; i <= n ; i++){
if(a[i][k] == 0) continue ;
for(j = k ; j <= n+1 ; j++)
a[i][j] ^= a[k][j] ;
}
}
for(i = n ; i >= 1 ; i--){
x[i] = a[i][n+1] ;
for(j = i+1 ; j <= n ; x[i] ^= (a[i][j]&&x[j]),j++) ;
}
}