2 条题解

  • 0
    @ 2025-10-8 16:50:17

    hansang题解

    #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
      @ 2025-10-8 16:50:10

      hansang题解

      #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
      上传者