样例没过这题过了
查看原帖
样例没过这题过了
961149
xiao7_Mr_10_楼主2024/7/24 15:02
#include<bits/stdc++.h>
using namespace std;
const int N=1e2+5;
const double eps=1e-9;
int n;
double a[N][N];
double t(double x){
	if(x<0)return -x;
	return x;
}
bool xd(double x,double y){
	return (t(x-y)<eps);
}
int main(){
	cin >> n;
	for(int i = 1;i <= n;i++)
		for(int j = 1;j <= n+1;j++)
			cin >> a[i][j];
	int now=1;
	for(int k = 1;k <= n;k++){
		int id=now;
		for(int i = now+1;i <= n;i++)
			if(t(a[i][k])>t(a[id][k]))
				id=i;
		if(xd(a[id][k],0))continue;
		for(int i = 1;i <= n+1;i++)swap(a[now][i],a[id][i]);
		for(int i= 1;i <= n;i++){
			if(i==now)continue;
			double val=a[i][k]/a[now][k];
			for(int j = k;j <= n+1;j++)a[i][j]-=val*a[now][j];
		}
		now++;
	}	
	if(now<=n){
		while(now<=n){
			if(!xd(a[now++][n+1],0)){
				cout << "-1";
				exit(0);
			}
		}
		cout << 0;
	}
	else{
		for(int i = 1;i <= n;i++)printf("x%d=%.2lf\n",i,a[i][n+1]/a[i][i]);
	}
	return 0;
}

2024/7/24 15:02
加载中...