列表

详情


NC217455. 四面体

描述

溪染:喂,叁秋,我这里有空间上个点的坐标,你能帮我求出他们构成四面体的体积吗?
叁秋:我试试!
叁秋发现自己不会算,直接说自己不会又觉得很没面子,于是她找到了你。

输入描述

共四行,每行输入个参数,表示点的坐标,输入的坐标均为整数。
输入保证,四个点的坐标可以构成四面体。(不会出现四点共面的情况)

输出描述

仅一行一个实数,表示构成四面体的体积,你的答案正确,当且仅当你的答案与实际答案之间的误差不大于

示例1

输入:

0 0 0
0 3 0
4 0 0
0 0 4

输出:

8.00000000000000

示例2

输入:

-1 -49 -20
-25 -6 12
38 -45 -29
-30 -37 -12

输出:

2189.1666666666666667

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C 解法, 执行用时: 5ms, 内存消耗: 376K, 提交时间: 2022-04-23 21:16:55

#include<stdio.h>
#include<math.h>
int main()
{
	int x1,x2,x3,x4,y1,y2,y3,y4,z1,z2,z3,z4;
	double v;
	scanf("%d%d%d",&x1,&y1,&z1);
	scanf("%d%d%d",&x2,&y2,&z2);
	scanf("%d%d%d",&x3,&y3,&z3);
	scanf("%d%d%d",&x4,&y4,&z4);
	v=1.0/6*((x1-x2)*((y3-y2)*(z4-z2)-(z3-z2)*(y4-y2))-(x3-x2)*((y1-y2)*(z4-z2)-(z1-z2)*(y4-y2))+(x4-x2)*((y1-y2)*(z3-z2)-(z1-z2)*(y3-y2)));
	printf("%lf",fabs(v));
}

pypy3 解法, 执行用时: 140ms, 内存消耗: 25756K, 提交时间: 2022-04-23 10:24:07

x1,y1,z1 = map(int,input().strip().split())
x2,y2,z2 = map(int,input().strip().split())
x3,y3,z3 = map(int,input().strip().split())
x4,y4,z4 = map(int,input().strip().split())

print(abs((x2-x1)*(y3-y1)*(z4-z1) + (x3-x1)*(y4-y1)*(z2-z1) + (x4-x1)*(y2-y1)*(z3-z1) - (x4-x1)*(y3-y1)*(z2-z1) - (x3-x1)*(y2-y1)*(z4-z1) - (x2-x1)*(y4-y1)*(z3-z1))/6)

Python3 解法, 执行用时: 49ms, 内存消耗: 4640K, 提交时间: 2022-04-24 19:21:34

x1,y1,z1 = map(int,input().strip().split())
x2,y2,z2 = map(int,input().strip().split())
x3,y3,z3 = map(int,input().strip().split())
x4,y4,z4 = map(int,input().strip().split())
ans = abs((x2-x1)*(y3-y1)*(z4-z1)+(x3-x1)*(y4-y1)*(z2-z1)+(x4-x1)*(y2-y1)*(z3-z1)-(x4-x1)*(y3-y1)*(z2-z1)-(x3-x1)*(y2-y1)*(z4-z1)-(x2-x1)*(y4-y1)*(z3-z1))/6
print(ans)

C++ 解法, 执行用时: 5ms, 内存消耗: 432K, 提交时间: 2022-04-25 09:28:55

#include<bits/stdc++.h>
using namespace std;
double a[12];
int main()
{
    for(int i=0;i<12;i++)
        scanf("%lf",&a[i]);
    for(int i=3;i<12;i++)
        a[i]-=a[i%3];
    double x=(a[4]*a[8]-a[5]*a[7])*a[9],y=(a[3]*a[7]-a[4]*a[6])*a[11],z=(a[5]*a[6]-a[3]*a[8])*a[10];
    printf("%.14lf\n",abs(x+y+z)/6.0);
    
}

上一题