#include<bits/stdc++.h>
using namespace std;
const int maxn=105;
int n;
double a[maxn][maxn],ans[maxn];
void show(){
for(int i=1;i<=n;i++){
for(int j=1;j<=n+1;j++){
cout<<a[i][j]<<' ';
}
cout<<'\n';
}
return;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n+1;j++){
cin>>a[i][j];
}
}
for(int now=1,now2=1;now2<=n;now2++){
now=now2;
for(int j=now2+1;j<=n;j++) {
if(a[j][now2]>a[now][now2])now=j;
}
if(a[now][now2]==0){
cout<<"No Solution";
return 0;
}
swap(a[now2],a[now]);
// cout<<"now: "<<now<<" now2:"<<now2<<"\n";
// show();
double cnt=1/a[now2][now2];
for(int i=1;i<=n+1;i++){
a[now2][i]*=cnt;
}
// cout<<now2<<" now: "<<now<<" main:\n";
// show();
for(int i=1;i<=n;i++){
if(i==now2)continue;
for(int j=n+1;j>=1;j--){
a[i][j]-=a[now2][j]*a[i][now2];
}
}
// cout<<"now: "<<now<<" else:\n";
// show();
}
for(int i=1;i<=n;i++){
double tot=0;
for(int j=1;j<=n;j++){
tot+=a[i][j];
}
if(tot==0||a[i][i]!=1){
cout<<"No Solution\n";
return 0;
}
else ans[i]=a[i][n+1];
}
for(int i=1;i<=n;i++)printf("%.2lf\n",ans[i]);
return 0;
}
//from chpyx2
调不出来:(
前面几行运行没问题,后面就不对劲了
可以用里面show函数辅助调试,作用是输出目前的整个矩阵