2 条题解
-
0
#include<bits/stdc++.h> using namespace std; const double eps=1e-8; const int N=15; int n; double a[N][N], x[N], d1[N], d2[N]; 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++)scanf("%lf",&d1[i]); for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++)scanf("%lf",&d2[j]); double s=0; for(int j=1;j<=n;j++) a[i][j] = 2*(d2[j] - d1[j]), s += d2[j]*d2[j] - d1[j]*d1[j]; a[i][n+1] = s; } gauss(); return 0; } -
0
#include<bits/stdc++.h> using namespace std; const double eps=1e-8; const int N=15; int n; double a[N][N],x[N],d1[N],d2[N]; 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++)scanf("%lf",&d1[i]); for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++)scanf("%lf",&d2[j]); double s=0; for(int j=1;j<=n;j++) a[i][j]=2*(d2[j]-d1[j]), s+=d2[j]*d2[j]-d1[j]*d1[j]; a[i][n+1]=s; } gauss(); return 0; }

- 1
信息
- ID
- 2666
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 4
- 标签
- 递交数
- 60
- 已通过
- 26
- 上传者