题解:洛谷 P1888 三角函数

【题目来源】

洛谷:P1888 三角函数 - 洛谷

【题目描述】

输入一组勾股数 \(a,b,c(a\neq b\neq c)\),用分数格式输出其较小锐角的正弦值。(要求约分。)

【输入】

一行,包含三个正整数,即勾股数 \(a,b,c\)(无大小顺序)。

【输出】

一行,包含一个分数,即较小锐角的正弦值

【输入样例】

3 5 4

【输出样例】

3/5

【算法标签】

《洛谷 P1888 三角函数》 #数学# #排序# #最大公约数,gcd#

【代码详解】

#include <bits/stdc++.h>  // 包含标准库头文件(万能头文件)
#include <algorithm>     // 包含算法库(使用sort函数)
using namespace std;     // 使用标准命名空间

/**
 * 计算两个数的最大公约数(GCD)
 * @param a 第一个整数
 * @param b 第二个整数
 * @return 最大公约数
 */
int gcd(int a, int b)
{
    return 0 == b ? a : gcd(b, a % b);  // 欧几里得算法递归实现
}

/**
 * 主函数 - 程序入口
 * @return 程序执行状态码(0表示成功)
 */
int main()
{
    int a[3];           // 定义包含3个整数的数组
    
    cin >> a[0] >> a[1] >> a[2];  // 输入三个整数
    
    sort(a, a + 3);     // 对数组进行升序排序
    
    // 输出最简分数形式(最小数/最大数)
    // 通过除以最大公约数进行约分
    cout << a[0] / gcd(a[0], a[2]) << "/" << a[2] / gcd(a[0], a[2]);
    
    return 0;           // 程序正常结束
}

【运行结果】

3 5 4
3/5
posted @ 2026-02-16 10:32  团爸讲算法  阅读(7)  评论(0)    收藏  举报