2026/2/25 17:48:01
网站建设
项目流程
网站开发语言分析,卫浴网站设计,仿网站ppt怎么做,先做网站后备案吗题目描述
有一个球形空间产生器能够在 n 维空间中产生一个坚硬的球体。现在#xff0c;你被困在了这个 n 维球体中#xff0c;你只知道球面上 n1 个点的坐标#xff0c;你需要以最快的速度确定这个 n 维球体的球心坐标#xff0c;以便于摧毁这个球形空间产生器。
输入格式…题目描述有一个球形空间产生器能够在 n 维空间中产生一个坚硬的球体。现在你被困在了这个 n 维球体中你只知道球面上 n1 个点的坐标你需要以最快的速度确定这个 n 维球体的球心坐标以便于摧毁这个球形空间产生器。输入格式第一行是一个整数 n (1≤N≤10)。接下来的 n1 行每行有 n 个实数表示球面上一点的 n 维坐标。每一个实数精确到小数点后 6 位且其绝对值都不超过 20000。输出格式有且只有一行依次给出球心的 n 维坐标 n 个实数两个实数之间用一个空格隔开。每个实数精确到小数点后 3 位。数据保证有解。你的答案必须和标准输出一模一样才能够得分。输入输出样例输入 #1复制2 0.0 0.0 -1.0 1.0 1.0 0.0输出 #1复制0.500 1.500说明/提示提示给出两个定义球心到球面上任意一点距离都相等的点。距离设两个 n 维空间上的点 A,B 的坐标为 (a1,a2,⋯,an),(b1,b2,⋯,bn)则 A,B 的距离定义为dist(a1−b1)2(a2−b2)2⋯(an−bn)2。代码实现#includebits/stdc.h #define reg register const int mn 15; int n; double a[mn][mn]; double b[mn][mn]; int main(){ scanf(%d, n); for(reg int i 1; i n1; i ) for(reg int j 1; j n; j ) scanf(%lf, b[i][j]); for(reg int i 1; i n; i ){ for(reg int j 1; j n; j ) a[i][j] 2.0*(b[i1][j] - b[i][j]); a[i][n1] 0; for(reg int j 1; j n; j ) a[i][n1] (b[i][j]b[i1][j])*(b[i1][j] - b[i][j]); } for(reg int i 1; i n; i ){ int mid i; for(reg int j i1; j n; j ) if(fabs(a[mid][i]) fabs(a[j][i])) mid j; std::swap(a[i], a[mid]); double t a[i][i]; for(reg int j i; j n1; j ) a[i][j] / t; for(reg int j i1; j n; j ){ t a[j][i]; for(reg int k i; k n1; k ) a[j][k] - a[i][k] * t; } } for(reg int i n; i 1; i --) for(reg int j i1; j n; j ) a[i][n1] - a[i][j]*a[j][n1]; for(reg int i 1; i n; i ) printf(%.3lf , a[i][n1]); return 0; }