【深基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;
}