2 条题解
-
0
#include<bits/stdc++.h> using namespace std; const double eps=1e-8; int n; double a[110][110],x[110]; void gauss() { int r=1; for(int c=1;c<=n;c++) { for(int i=r+1;i<=n;i++) { while( fabs(a[i][c])>eps ) { double bs=a[r][c]/a[i][c]; for(int j=1;j<=n+1;j++)a[r][j]=a[r][j]-a[i][j]*bs; swap(a[r],a[i]); } } if(fabs(a[r][c])>eps) r++; } /* for(int i=r;i<=n;i++)if(fabs(a[i][n+1])>eps) {printf("no solution\n");return ;} if(r<=n) {printf("many solution\n");return ;} */ for(int i=n;i>=1;i--) { for(int j=i+1;j<=n;j++)a[i][n+1]-=x[j]*a[i][j]; x[i]=a[i][n+1]/a[i][i]; if(fabs(x[i])<eps)x[i]=fabs(x[i]); } for(int i=1;i<=n;i++)printf("%.3lf ",x[i]); } int main() { scanf("%d",&n); for(int i=1;i<=n;i++)for(int j=1;j<=n+1;j++)scanf("%lf",&a[i][j]); gauss(); return 0; } -
0
#include<bits/stdc++.h> using namespace std; const double eps=1e-8; int n; double a[110][110],x[110]; void gauss() { int r=1; for(int c=1;c<=n;c++) { for(int i=r+1;i<=n;i++) { while( fabs(a[i][c])>eps ) { double bs=a[r][c]/a[i][c]; for(int j=1;j<=n+1;j++)a[r][j]=a[r][j]-a[i][j]*bs; swap(a[r],a[i]); } } if(fabs(a[r][c])>eps) r++; } /* for(int i=r;i<=n;i++)if(fabs(a[i][n+1])>eps) {printf("no solution\n");return ;} if(r<=n) {printf("many solution\n");return ;} */ for(int i=n;i>=1;i--) { for(int j=i+1;j<=n;j++)a[i][n+1]-=x[j]*a[i][j]; x[i]=a[i][n+1]/a[i][i]; if(fabs(x[i])<eps)x[i]=fabs(x[i]); } for(int i=1;i<=n;i++)printf("%.3lf ",x[i]); } int main() { scanf("%d",&n); for(int i=1;i<=n;i++)for(int j=1;j<=n+1;j++)scanf("%lf",&a[i][j]); gauss(); return 0; }
- 1
信息
- ID
- 402
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 7
- 标签
- 递交数
- 207
- 已通过
- 52
- 上传者