1 条题解

  • 0
    @ 2025-8-24 21:07:46

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar chen_zhe
    Aya 敲可爱的~

    搬运于2025-08-24 21:07:45,当前版本为作者最后更新于2025-05-14 14:40:30,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    欢迎报名洛谷网校,期待和大家一起进步!

    本题考察分支结构和三角形的性质。

    我们要分两步走:

    第一步:判断能不能组成三角形。

    三角形的要求是三角形两边之和大于第三边。就是说,对于一个三角形:

    • 木棍 aa 的长度 + 木棍 bb 的长度,必须大于木棍 cc 的长度。
    • 木棍 aa 的长度 + 木棍 cc 的长度,必须大于木棍 bb 的长度。
    • 木棍 bb 的长度 + 木棍 cc 的长度,必须大于木棍 aa 的长度。

    三个条件必须同时都满足,这三根木棍才能围成一个三角形。只要有一个条件不满足,它们就拼不起来。

    第二步:如果能组成三角形,就计算面积。

    题目中给出了海伦公式。若三角形的边长为 a,b,ca, b, c,则三角形的面积是 s(sa)(sb)(sc)\sqrt{s(s-a)(s-b)(s-c)},其中 s=12(a+b+c)s=\frac{1}{2}(a+b+c)

    所以我们先使用分支结构完成第一步,再根据海伦公式完成第二步,即可完成本题。

    参考代码:

    // a, b, c 要定义成 double 类型! 
    if (a + b > c && a + c > b && b + c > a) {
        // 如果能组成三角形,则利用海伦公式计算面积
        double s = (a + b + c) / 2.0;
        double area = sqrt(s * (s - a) * (s - b) * (s - c));
        printf("%.2f\n", area);
    } else {
        // 如果不能组成三角形
        cout << "No solution." << endl;
    }
    
    • 1

    信息

    ID
    11806
    时间
    1000ms
    内存
    512MiB
    难度
    1
    标签
    递交数
    1
    已通过
    0
    上传者