【深基3.习6】三角函数 · 教师题解

【深基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;
}
返回题目