求助 70分
查看原帖
求助 70分
523525
徐天乾楼主2021/7/2 14:14

https://www.luogu.com.cn/record/52279802

以及

#include<bits/stdc++.h>
using namespace std;
double a[110][110],b[110],Q;
int i,j,n,flag,FLAG,Flag[110];;
void Gauss(int t){
	if (t>n) return ;
	int i,j,k;
	for (k=1;k<=n;k++)
		if (a[k][t]!=0&&!Flag[k]) break;
	if (!a[k][t]){flag=1;return ;}
	Flag[k]=1;
	for (i=1;i<=n;i++){
		if (i==k||!a[t][t]) continue;
		Q=a[i][t]/a[t][t];
		for (j=t;j<=n+1;j++)
			a[i][j]-=a[k][j]*Q;
	}
	Gauss(t+1);
	b[t]=a[k][n+1]/a[k][t];
	for (i=1;i<=n;i++)
		a[i][n+1]-=a[i][t]*b[t],a[i][t]=0;
	return ;			
}
int main(){
	scanf("%d",&n);
	for (i=1;i<=n;i++)
		for (j=1;j<=n+1;j++)
			scanf("%lf",&a[i][j]);
	Gauss(1);
	if (flag){
		for (i=1;i<=n;i++) FLAG|=a[i][n+1]!=0;
		printf("%d\n",-FLAG);return 0;
		} 
	for (i=1;i<=n;i++) printf("x%d=%.2f\n",i,b[i]); 
	return 0;
}

2021/7/2 14:14
加载中...