Solution
人间迷惑行为——省选考模板?
高斯消元跑一遍
若每一个未知数分别为一个式子的主元——输出答案
否则看各项系数都为0的式子等号右边是否为0,
若为0,有无数解;否则无解
Code
#include <cstdio> #include <cstdlib> #include <cmath> #include <algorithm> #define db double using namespace std; const int N=60; db a[N][N],eps=1e-8; int n; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) scanf("%lf",&a[i][j]); scanf("%lf",&a[i][0]); } int del=0; for(int i=1;i<=n;i++) { int now=0; for(int j=del+1;j<=n;j++) if(fabs(a[j][i])>eps) { now=j; break; } if(!now) continue; del++; for(int j=0;j<=n;j++) swap(a[now][j],a[del][j]); for(int j=1;j<=n;j++) { if(j==del) continue; double rate=a[j][i]/a[del][i]; for(int k=0;k<=n;k++) a[j][k]-=a[del][k]*rate; } } if(del==n) for(int i=1;i<=n;i++) printf("x%d=%.2lf\n",i,a[i][0]/a[i][i]); else { bool flag=true; for(int i=del+1;i<=n;i++) if(fabs(a[i][0])>eps) { flag=false; break; } if(flag) puts("0"); else puts("-1"); } return 0; }