1 条题解

  • 0
    @ 2034-3-16 10:17:27

    【深基3.习6】三角函数

    解题思路

    排序得到最短边 a 和斜边 c。较小锐角对最短边,其正弦为 a/c,再用最大公约数约分。

    正确性说明

    直角三角形中较小锐角对应较短直角边,正弦按定义为对边除斜边;分子分母同除最大公约数得到最简分数。

    易错点

    输入没有顺序;C++11 没有 std::gcd,使用欧几里得算法。

    复杂度

    最大数 M,时间 O(log M),空间 O(1)。

    参考代码(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        long long a[3];
        cin >> a[0] >> a[1] >> a[2];
        sort(a, a + 3);
        long long x = a[0], y = a[2];
        while (y) {
            long long t = x % y;
            x = y;
            y = t;
        }
        cout << a[0] / x << "/" << a[2] / x << "\n";
        return 0;
    }
    
    • 1