top1编程
← 返回题目
题解

【入门】能否构成直角三角形

1 条题解

  • 0
    @ 2026-7-30 0:55:14

    解题思路

    先把三条边从小到大排列,最长边只能是斜边。若两条短边的平方和等于最长边的平方,就能构成直角三角形,面积是两条直角边乘积的一半。

    参考代码

    // 读取题目给出的数据。
    // 按照题意完成计算。
    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    int main() {
        int a, b, c;
        cin >> a >> b >> c;
    
        // 把最大的数放到 c 中
        if (a > b) {
            int t = a;
            a = b;
            b = t;
        }
        if (b > c) {
            int t = b;
            b = c;
            c = t;
        }
        if (a > b) {
            int t = a;
            a = b;
            b = t;
        }
    
        if (a * a + b * b == c * c) {
            cout << fixed << setprecision(1) << a * b / 2.0;
        } else {
            cout << "No";
        }
        return 0;
    }
    

    复杂度分析

    图形题的输出规模是 O(n²),所以时间复杂度为 O(n²),空间复杂度为 O(1)。

    • 1