1 条题解
-
1
#include<bits/stdc++.h> using namespace std; const int N=20; const double eps=1e-12; int n; double w[N][N],a[N][N],x[N]; void gauss(){ int now=1,k; for(int i=1;i<=n;i++){ for(k=now;k<=n;k++){ if(fabs(a[k][i])>eps){ swap(a[k],a[now]); break; } } if(k==n+1)continue; for(k=1;k<=n;k++){ if(k!=now){ double tmp=a[k][i]/a[now][i]; for(int j=1;j<=n+1;j++){ a[k][j]-=a[now][j]*tmp; } } } now++; } for(int i=now;i<=n;i++){ if(fabs(a[i][n+1])>eps){ puts("-1"); exit(0); } } if(now<=n){ puts("0"); exit(0); } for(int i=1;i<=n;i++){ x[i]=a[i][n+1]/a[i][i]; } } int main(){ scanf("%d",&n); for(int i=1;i<=n+1;i++){ for(int j=1;j<=n;j++){ scanf("%lf",&w[i][j]); } } for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ a[i][j]=2*(w[i][j]-w[i+1][j]); } double sum=0; for(int j=1;j<=n;j++){ sum=sum+(w[i][j]*w[i][j]-w[i+1][j]*w[i+1][j]); } a[i][n+1]=sum; } gauss(); for(int i=1;i<=n;i++){ printf("%.3lf ",x[i]); } return 0; }
- 1
信息
- ID
- 1013
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 113
- 已通过
- 45
- 上传者