不是?这能A?
查看原帖
不是?这能A?
1032797
C_Dreamer_zw楼主2025/1/23 20:57

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

#include<bits/stdc++.h>
using namespace std;
#define EPS 1e-8
int n;
double a[110][110];
int gauss(){
	int r , c;
	for (c = 0 , r = 0 ; c < n ; c++){
		int t = r;
		for (int i = r ; i < n ; i++){
			if (fabs(a[i][c]) > fabs(a[t][c])){
				t = i;
			}
		}
		if (fabs(a[t][c]) < EPS) continue;
		swap(a[t] , a[r]);
		for (int i = n ; i >= c ; i--) a[r][i] /= a[r][c];
		for (int i = r + 1 ; i < n ; i++){
			if (fabs(a[i][c]) > EPS)
				for (int j = n ; j >= c ; j--)
					a[i][j] -= a[r][j] * a[i][c];
		}
		r++;
	}
	if (r < n){
		for (int i = r ; i < n ; i++)
			if (fabs(a[i][n]) > EPS)
				return 2;
		return 1;//无数解 
	}
	for (int i = n - 1 ; i >= 0 ; i--){
		for (int j = i + 1 ; j < n ; j++){
			a[i][n] -= a[j][n] * a[i][j];
		}
	}
	return 0;
}
int main() {
	scanf("%d" , &n);
	for (int i = 0 ; i < n ; i++)
		for (int j = 0 ; j <= n ; j++)
			scanf("%lf" , &a[i][j]);
	int t = gauss();
	if (t == 0){
		for (int i = 0 ; i < n ; i++) printf("x%d=%.2lf\n" , i , a[i][n]);
	}
	else if (t == 2) printf("-1\n");
	else printf("0\n");
	return 0;
}
printf("x%d=%.2lf\n" , i , a[i][n]);/*这不应该是printf("x%d=%.2lf\n" , i + 1 , a[i][n]);?*/
2025/1/23 20:57
加载中...