OI模板 高斯消元
高斯消元
#include <bits/stdc++.h>
using namespace std;
const int N = 110;
const double eps = 1e-4;
double a[N][N];
int n;
int gauss(){
int c, r;
for(c = 1, r = 1; c <= n; ++ c){
int tmp = r;
for(int i = r; i <= n; ++ i){
if(fabs(a[i][c]) > fabs(a[tmp][c])){
tmp = i;
}
}
if(fabs(a[tmp][c]) < eps){
continue;
}
swap(a[tmp], a[r]);
double val = a[r][c];
for(int i = 1; i <= n+1; ++ i){
a[r][i] /= val;
}
for(int i = 1; i <= n; ++ i){
if(i == r) continue;
val = a[i][c];
for(int j = 1; j <= n+1; ++ j){
a[i][j] -= a[r][j] * val;
}
}
++ r;
}
if(r <= n){
for(int i = r; i <= n; ++ i){
if(fabs(a[i][n+1]) > eps){
return 2;
}
}
return 1;
}
return 0;
}
int main(){
scanf("%d", &n);
for(int i = 1; i <= n; ++ i){
for(int j = 1; j <= n + 1; ++ j){