本地 No solution,测评 2.00。
#include<bits/stdc++.h>
#define F(i,a,b) for(int i=(a);i<=(b);i++)
#define db double
using namespace std;
const int N=1e3+10;
const db eps=1e-9;
db a[N][N];//高斯消元数组
int n;
int ma;
void Gauss()
{
F(i,1,n)
{
ma=i;
F(j,1,n)
{
if(fabs(a[j][j])>eps&&j<i) continue;
if(fabs(a[j][i])>fabs(a[ma][i])) ma=j;
}
F(j,1,n+1) swap(a[i][j],a[ma][j]);
if(fabs(a[i][i])<eps) continue;
F(j,1,n)
{
if(i==j) continue;
db rate=a[j][i]/a[i][i];
F(k,i,n+1) a[j][k]-=a[i][k]*rate;
}
}
}
int main()
{
cin>>n;
F(i,1,n) F(j,1,n+1) cin>>a[i][j];
Gauss();
F(i,1,n) if(!a[i][i]&&fabs(a[i][n+1])>eps) return puts("No Solution"),0;
F(i,1,n) if(!a[i][i]&&fabs(a[i][n+1])<eps) return puts("No Solution"),0;
F(i,1,n)
{
if(fabs(a[i][n+1]/a[i][i])<eps) printf("0.00\n");
else printf("%.2lf\n",a[i][n+1]/a[i][i]);
}
return 0;
}