【BZOJ 1013】【JSOI 2008】球形空间产生器sphere

高斯消元裸题,设球的一般方程为a^2+b^2+c^2+...+z^2+Aa+Bb+Cc+...+Zz=常数,求解即可code:

球心坐标为(A/-2,B/-2,C/-2,...,Z/-2)

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
double a[15][15],b[15],x[15];
int n;
int main()
{
	int i,j,k;
	double xi,bz;
	scanf("%d",&n);
	for (i=1;i<=n+1;++i)
	  for (j=1;j<=n;++j)
	    {
	      scanf("%lf",&xi);
		  a[i][j]=xi;
		  a[i][n+1]=1;
		  b[i]-=xi*xi;  
	    }
	for (k=1;k<=n+1;++k)
	  {
	    if (a[k][k]==0)
	      {
	        for (j=k+1;j<=n+1;++j)
	          if (a[j][k]!=0)
	            {
	              for (i=1;i<=n+1;++i)
	                swap(a[j][i],a[k][i]);
	              swap(b[j],b[k]);
	              break;
	            }
	      }
	    for (j=k+1;j<=n+1;++j)
	      {
	        bz=a[j][k]/a[k][k];
	        for (i=1;i<=n+1;++i)
	          a[j][i]-=a[k][i]*bz;
	        b[j]-=b[k]*bz;
	      }
	  }
	for (k=n+1;k>=1;--k)
	  {
	    x[k]=b[k]/a[k][k];
	    for (j=k-1;j>=1;--j)
	      {
	        b[j]-=x[k]*a[j][k];
	        a[j][k]=0;
	      }
	  }
	for (i=1;i<=n-1;++i)
	  {
	    xi=-x[i]/2;
	    printf("%.3f ",xi);
	  }
	xi=-x[n]/2;
	printf("%.3f\n",xi);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值