WA on #1
查看原帖
WA on #1
753640
封禁用户楼主2024/5/27 21:36

本地 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;
}
2024/5/27 21:36
加载中...