Mr_ll @ 2022-07-20 20:18:41
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=50+5;
const double esp=1e-8;
int n;
int b[N],c;
double a[N][N];
void Gauss()
{
int h=1;
for(int i=1;i<=n;i++)
{
int maxx=h;
for(int j=h+1;j<=n;j++)
{
if(a[maxx][i]<a[j][i])
{
maxx=j;
}
}
if(fabs(a[maxx][i])<esp) continue;
for(int j=1;j<=n+1;j++)
{
swap(a[maxx][j],a[h][j]);
}
for(int j=1;j<=n+1;j++)
{
if(i==j) continue;
double d=a[j][i]/a[h][i];
for(int k=i+1;k<=n+1;k++)
{
a[j][k]-=d*a[h][k];
}
}
h++;
}
h--;
if(h<n)
{
for(int i=h+1;i<=n;i++)
{
if(fabs(a[i][n+1])<esp)
{
puts("-1");
return;
}
}
puts("0");
return;
}
for(int i=1;i<=n;i++)
{
printf("x%d=%.2lf\n",i,a[i][n+1]/a[i][i]);
}
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&b[1]);
c=b[1];
for(int j=2;j<=n+1;j++)
{
scanf("%d",&b[j]);
c=__gcd(c,b[j]);
}
c=abs(c);
for(int j=1;j<=n+1;j++)
{
a[i][j]=(double)(b[j]/c);
}
}
Gauss();
return 0;
}