这道题的难点在于求 和 之间的面积关系。题目给出了 三个顶点的坐标,我们可以用海伦公式求出它的面积:
其中 为三角形三边的长,。
求 和 之间的面积关系,我们可以用梅涅劳斯定理:如果一直线与 的边 或其延长线分别交于 ,则有:
图例:

对题目中的 使用梅涅劳斯定理,可得 ,则 。
同理,。
设 ,由 可得 ,。
,即 。
关键的两个问题求完了,代码应该就能很轻松地写出来。只要把 的面积除以 就好了。注意输入是小数,输出不是小数。代码:
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; }
|


Zera / 捷攎
Keep writing and Keep loving.
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Zera 的小博客!