题解 B2031 【计算三角形面积】

看到这道题,一种相似的感觉油然而生——我们瞬间想到了P5708 【深基2.习2】三角形面积

让我们看看题目中的一句话:

一个三角形的三边长分别是 aabbcc,那么它的面积为 p(pa)(pb)(pc)\sqrt{p(p-a)(p-b)(p-c)} ,其中 p=12(a+b+c)p=\frac{1}{2}(a+b+c)

突然好像恍然大悟了!我们虽然只知道点的坐标,但可以通过公式 AB=(AxBx)2+(AyBy)2AB=\sqrt{(A_x-B_x)^2+(A_y-B_y)^2} 求出边的长度,最后利用此题的公式,马上求出答案!

Code

#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
double x11,y11,x2,y2,x3,y3,a,b,c,p,ans;//x1,y1在<cmath>库中被定义了,需要重定一个变量 
int main()
{
    cin>>x11>>y11>>x2>>y2>>x3>>y3;
    a=sqrt((x11-x2)*(x11-x2)+(y11-y2)*(y11-y2));
    b=sqrt((x11-x3)*(x11-x3)+(y11-y3)*(y11-y3));
    c=sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3));
    p=0.5*(a+b+c);
    ans=sqrt(p*(p-a)*(p-b)*(p-c));
    printf("%.2f",ans);
	return 0;
}
posted @ 2021-07-03 17:31  luckydrawbox  阅读(61)  评论(0)    收藏  举报  来源