这个题有公式。 用公式提交AC之后 才知道 是根据海伦公式推出来的。
设三边为 abc 三高为 mnp 则S = am/2 = bn/2 = cp/2
则 a = 2s/m b = 2s/n c = 2s/p
海伦公式 S = sqrt(p*(p-a)*(p-b)*(p-c)); p = (a+b+c)/2 带进去就求出来了
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdlib>
using namespace std;
int main (){
int kase;
scanf("%d",&kase);
while(kase){
double mm,nn,pp;
double m,n,p;
scanf("%lf%lf%lf",&mm,&nn,&pp);
p = max(mm,nn);
p = max(p, pp);
m = min(mm,nn);
m = min(m, pp);
n = (mm + nn + pp) - m - p; // m n p 是递增的
if(1/n + 1/ p <= 1/m){
printf("These are invalid inputs!\n");
kase--;
}
else{
double s = sqrt((1/m+1/n+1/p)*(-1/m+1/n+1/p)*(1/m-1/n+1/p)*(1/m+1/n-1/p));
s = 1/s;
printf("%.3lf\n",s);
}
}
return 0;
}
520


&spm=1001.2101.3001.11974&articleId=39007351&d=1&t=3&u=b6aa2f5a26984776b4d8a4774ca9ec68)

被折叠的 条评论
为什么被折叠?



