本文距离上次更新已过去 0 天,部分内容可能已经过时,请注意甄别。
这道题的难点在于求
和
之间的面积关系。题目给出了 三个顶点的坐标,我们可以用海伦公式求出它的面积:
其中
为三角形三边的长,。
求 和
之间的面积关系,我们可以用梅涅劳斯定理:如果一直线与 的边 或其延长线分别交于 ,则有:
图例:
![图例]()
对题目中的
使用梅涅劳斯定理,可得 ,则 。
同理,。
设 ,由
可得 ,。
,即 。
关键的两个问题求完了,代码应该就能很轻松地写出来。只要把 的面积除以
就好了。注意输入是小数,输出不是小数。代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| #include <bits/stdc++.h> using namespace std;
int main() { int t; scanf("%d", &t); for (int i = 1; i <= t; i++) { double xa, ya, xb, yb, xc, yc; scanf("%lf%lf%lf%lf%lf%lf", &xa, &ya, &xb, &yb, &xc, &yc); double x, y, z; x = sqrt((yb - ya) * (yb - ya) + (xb - xa) * (xb - xa)); y = sqrt((yc - ya) * (yc - ya) + (xc - xa) * (xc - xa)); z = sqrt((yc - yb) * (yc - yb) + (xc - xb) * (xc - xb)); double s, p; p = (x + y + z) / 2; s = sqrt(p * (p - x) * (p - y) * (p - z)); printf("%.0lf\n", s / 7); } return 0; }
|