数据
10
835 954 469 753 586 32 354 441 432 976 454
180 556 194 201 244 941 818 439 860 131 62
503 602 160 43 859 97 568 378 467 567 898
304 512 244 586 636 682 174 653 317 627 467
99 861 764 501 410 457 85 121 83 23 124
365 569 982 739 749 560 66 864 634 995 880
883 718 720 574 797 174 194 341 823 470 148
59 590 408 611 855 590 398 196 859 34 515
63 937 771 356 466 687 437 242 280 473 466
781 426 782 148 345 590 688 369 455 150 696
会输出
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
求助大佬
#include<bits/stdc++.h>
#define ll long long
#define il inline
using namespace std;
const double eps=1e-7;
const int N=105;
double a[N][N];
double ans[N];
int n;
il void work(){
for(int i=1;i<=n;i++){
if(fabs(a[i][i])<eps){
for(int j=i+1;j<=n;j++){
if(fabs(a[j][i])){
for(int k=i;k<=n+1;k++){
swap(a[i][k],a[j][k]);
}
}
}
if(fabs(a[i][i])<eps){
printf("No Solution");
return;
}
}
for(int j=i+1;j<=n;j++){
if(fabs(a[j][i])<eps) continue;
double s=a[j][i];
for(int k=i;k<=n+1;k++){
a[j][k]=a[j][k]*a[i][i]-s*a[i][k];
}
}
}
for(int i=n;i>=1;i--){
if(fabs(a[i][i])<eps){
printf("No Solution");
return;
}
ans[i]=a[i][n+1]/a[i][i];
for(int j=i-1;j>=1;j--){
a[j][n+1]-=a[j][i]*ans[i];
}
}
for(int i=1;i<=n;i++){
printf("%.2lf\n",ans[i]);
}
}
int main(){
// freopen("p3389.in","r",stdin);
// freopen("p3389.in","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++){
for(int j=1;j<=n+1;j++){
scanf("%lf",&a[i][j]);
}
}
work();
return 0;
}