专栏文章

题解:P1888 三角函数

P1888题解参与者 12已保存评论 13

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
13 条
当前快照
1 份
快照标识符
@mipbhoq4
此快照首次捕获于
2025/12/03 09:17
3 个月前
此快照最后确认于
2025/12/03 09:17
3 个月前
查看原文

题意

给定直角三角形的三边,求其较小锐角的正弦值。

思路

一个角的正弦值,即在一个直角三角形中其对边比斜边的值。
那不正好吗,题目给出的直角三角形啊!那我们就确定它的斜边和它的对边即可。
怎么求呢?我们画个草图
在这里,红色角是较小角,容易看出,较小角对边是较短边。
那聪明的你一定发现了,答案输出最短边比最长边即可。
但是我们还要约分,只需要将它们都除以它们的最大公约数就行了,在 c++ 中,是提供了求两个数的最大公约数的函数了的,使用方法:
CPP
__gcd(a, b)
可以求出 (a,b)(a, b),也就是它们的最大公约数。
那么将 a,ba, b 分别除以它们最大公约数即可。

代码

CPP
#include<bits/stdc++.h>
using namespace std;

int main() {
    int a, b, c; cin >> a >> b >> c;
    if(a > b)  swap(a, b);
    if(a > c)  swap(a, c);
    if(b > c)  swap(b, c);// 排序 a, b, c
    cout << a / __gcd(a, c) << "/" << c / __gcd(a, c); // 约分
    return 0;
}
2025/11/30 更新:更改了错误的代码。

评论

13 条评论,欢迎与作者交流。

正在加载评论...