2 条题解

  • 0
    @ 2025-10-8 17:02:11
    #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
      @ 2025-10-8 17:02:00
      #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
      上传者