//P2455 SCOI2006 线性方程组
#include<bits/stdc++.h>
using namespace std;
#define int long long
const double N=1e-6;//开最小值
int n;
double a[105][105];//因为存在小数 所以开double
int gauss(int n,int m){
int r=0;//看现在消到第几行 充当指针
for(int k=0;k<n;k++){//k是主元
int piv=r;
for(int i=r;i<n;i++)
if(fabs(a[i][k])>fabs(a[piv][k]))
piv=i;
if(fabs(a[piv][k])<N)
continue;
for(int j=k;j<=m;j++)
swap(a[r][j],a[piv][j]);
for(int j=m;j>=k;j--)
a[r][j]/=a[r][k];//第k项系数消为1 递减消除 如果正着消除 会有误差
for(int i=r+1;i<n;i++)
for(int j=m;j>=k;j--)//倒着消除为好
if(fabs(a[i][k])>=N)//当系数不为零时消除
a[i][j]-=a[i][k]*a[r][j];//把第k项所有系数消为0
r++;
}
if(r<n){//判断有解或者是无数解
for(int i=0;i<n;i++){//枚举每一行 找到系数全为零的一行
bool flag=0;
for(int j=0;j<m;j++)
if(fabs(a[i][j])>=N)
flag=1;
if(flag)
continue;//如果有系数不为零则跳过
if(fabs(a[i][m])>=N)
return -1;//如果系数全为零 且结果不为零 则是无解
else
return 0;//否则为无数解
}
}
for(int j=n-1;j>=0;j--)//否则为精确解 代数解方程即可
for(int i=j-1;i>=0;i--)
a[i][m]-=a[j][m]*a[i][j];
return 1;//返回有精确解
}
signed main(){
cin>>n;
for(int i=0;i<n;i++)
for(int j=0;j<=n;j++)
cin>>a[i][j];
int t=gauss(n,n);
if(t<=0)
return cout<<t<<endl,0;//如果没有精确解 直接输出t
for(int i=0;i<n;i++)
printf("x%lld=%.2lf\n",i+1,a[i][n]);//否则按要求输出精确解
return 0;
}
sub1第三个点无解判为无数个解 仍未通过该题