题解 AT784 【直訴】

· · 题解

读了题以后,有的人一定知(shou)道(zu)做(wu)法(cuo)

这道题目已经给出了3个点的坐标,我们就可以求出每两点之间的距离。 很明显,距离公式等于

\sqrt{\left(x_2-x_1\right)^2+\left(y_2-y_1\right)^2}

这样得到3条边的长度,这里又有一个公式:海伦公式

p=\dfrac{a+b+c}{2} s=\sqrt{p\left(p-a\right)\left(p-b\right)\left(p-c\right)}

这样一来,代码也就顺理成章了:

#include<bits/stdc++.h>
using namespace std;
struct kkk
{
    double x,y;
}point[4];
int main()
{
    double a,b,c,p,ans;
    for(int i=1;i<=3;i++)
        cin>>point[i].x>>point[i].y;
    a=sqrt((point[1].x-point[2].x)*(point[1].x-point[2].x)+(point[1].y-point[2].y)*(point[1].y-point[2].y));
    b=sqrt((point[1].x-point[3].x)*(point[1].x-point[3].x)+(point[1].y-point[3].y)*(point[1].y-point[3].y));
    c=sqrt((point[2].x-point[3].x)*(point[2].x-point[3].x)+(point[2].y-point[3].y)*(point[2].y-point[3].y));
    p=(a+b+c)/2;
    ans=sqrt(p*(p-a)*(p-b)*(p-c));
    printf("%0.1lf\n",ans);
    return 0;
}