90 pts 求助 WA on #9 #13
查看原帖
90 pts 求助 WA on #9 #13
691641
Grow_楼主2024/7/11 09:12

代码是这样的:

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,x[105][105];
long double a[105][105];
long double ans[105];
signed main(){
	cin >> n;
	for(int i = 1;i<=n;i++){
		for(int j = 1;j<=n+1;j++)cin >> x[i][j];
	}
	for(int i = 1;i<=n;i++){
		for(int j = 1;j<=n+1;j++)a[i][j] = x[i][j]*1.0;
	}
	for(int i = 1;i<n;i++){
		for(int j = 1;j<=n-i;j++){
			if(a[j][n-i+1]==0)continue;
			double x = a[j+1][n-i+1]/a[j][n-i+1];
			if(x==0){
				for(int k = 1;k<=n+1;k++)swap(a[j][k],a[j+1][k]);
				continue;
			}
			for(int k = 1;k<=n+1;k++)a[j][k]*=x;
			for(int k = 1;k<=n+1;k++)a[j][k]-=a[j+1][k];
		}
	}
	for(int i = 1;i<=n;i++){
		bool fp = 1;
		for(int j = 1;j<=n;j++)if(a[i][j]!=0)fp = 0;
		if(fp){
			if(a[i][n+1]!=0)cout << "-1";
			else cout << "0";
			return 0;
		}
	}
	for(int i = 1;i<=n;i++){
		bool fp = 1;
		for(int j = 1;j<=n;j++)if(a[j][i]!=0)fp = 0;
		if(fp){
			if(a[i][n+1]!=0)cout << "-1";
			else cout << "0";
			return 0;
		}
	}
	for(int i = 1;i<=n;i++){
		for(int j = 1;j<i;j++){
			a[i][n+1]-=ans[j]*a[i][j];
		}
		ans[i] = a[i][n+1]/a[i][i];
	}
	for(int i = 1;i<=n;i++)if(ans[i]==-0)ans[i] = 0;
	for(int i = 1;i<=n;i++)printf("x%d=%.2Lf\n",i,ans[i]);
	return 0;
}
2024/7/11 09:12
加载中...