记录编号 190581 评测结果 AAAAAAAAAA
题目名称 [JSOI 2008]球形空间产生器sphere 最终得分 100
用户昵称 Gravatar神利·代目 是否通过 通过
代码语言 C++ 运行时间 0.028 s
提交时间 2015-10-03 19:25:51 内存使用 0.24 MiB
显示代码纯文本
#include<cstdio>
int n;
double t,a[15][15],s[15],o[15][15],ans[15];
void build()
{
	scanf("%d",&n);
	++n;
	for(int i=0;i<n;++i)
	    for(int j=1;j<n;++j)
	    {
			scanf("%lf",&a[i][j]);
			a[i][n]+=a[i][j]*a[i][j];
	    }
	for(int i=0;i<n;++i)
	    a[i][n]/=2;
	for(int i=1;i<n;++i)
		for(int j=1;j<=n;++j)
			o[i][j]=a[i][j]-a[i-1][j];

}
void work()
{
	for(int i=1;i<n;++i)
	{
		for(int j=i+1;j<n;++j)
		{
			t=-o[j][i]/o[i][i];
			o[j][i]=0;
			for(int k=i+1;k<=n;++k)
			    o[j][k]+=o[i][k]*t;
		}
	}
	o[n-1][n]/=o[n-1][n-1];
	o[n-1][n-1]=1;
	for(int i=n-2;i;--i)
	{
		t=0;
	    for(int j=i+1;j<n;++j)
			t+=o[i][j]*o[j][n];
		o[i][n]=(o[i][n]-t)/o[i][i];
		o[i][i]=1;
	}
}
int main()
{
	freopen("bzoj_1013.in","r",stdin);
	freopen("bzoj_1013.out","w",stdout);
	build();
/*
	for(int i=1;i<n;++i)
	{
	    for(int j=1;j<=n;++j)
	        printf("%lf ",o[i][j]);
	    printf("\n");
	}
*/
	work();
	for(int i=1;i<n;++i)
	    printf("%.3lf ",o[i][n]);
	getchar();
	getchar();
	getchar();
	getchar();
}