2015-03-25 23:35:18
思路:欧拉四面体公式题... 推荐这篇博文
过程虽然不难但是没有学过还是难以想到...
根据读入的边:p,q,r,n,m,l。然后用下面的最终推导式就可以辣~
1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4 #include <cmath> 5 #include <vector> 6 #include <map> 7 #include <set> 8 #include <stack> 9 #include <queue> 10 #include <string> 11 #include <iostream> 12 #include <algorithm> 13 using namespace std; 14 15 #define MEM(a,b) memset(a,b,sizeof(a)) 16 #define REP(i,n) for(int i=0;i<(n);++i) 17 #define FOR(i,a,b) for(int i=(a);i<=(b);++i) 18 #define getmid(l,r) ((l) + ((r) - (l)) / 2) 19 #define MP(a,b) make_pair(a,b) 20 21 typedef long long ll; 22 typedef pair<int,int> pii; 23 const int INF = (1 << 30) - 1; 24 25 double p,q,r,n,m,l; 26 27 int main(){ 28 scanf("%lf%lf%lf%lf%lf%lf",&p,&q,&r,&n,&m,&l); 29 double t1 = (p*p + q*q - n*n) / 2; 30 double t2 = (p*p + r*r - m*m) / 2; 31 double t3 = (q*q + r*r - l*l) / 2; 32 double ans1 = p*p * (q*q*r*r - t3*t3); 33 double ans2 = t1 * (t1*r*r - t2*t3); 34 double ans3 = t2 * (t1*t3 - q*q*t2); 35 double rlt = sqrt(ans1 - ans2 + ans3); 36 printf("%.4f\n",rlt / 6.0); 37 return 0; 38 }