题解:P1888 三角函数

· · 题解

题目の传送门。

很明显这是一道涉及到初三知识的题目,相信很多人在做这题时可能还没有学过三角函数,但是这里可以根据题目给出的样例推测一下 O^O。

前置知识

某一锐角的正弦值等于其对边长度与斜边长度的比值。

可以构成一个直角三角形三边的一组正整数叫做勾股数。

题目分析

根据题目,由于给出的是勾股数,那么根据勾股数的定义,很明显这是一个直角三角形嘛,那么排除最长的那条边(也就是斜边),那么只需要在剩下的两条边中找出最小的一条边作为被除数就行啦(除数不变的情况下,被除数越小商越小喵)。

注意了!

最后输出的结果要约分!这里推荐使用 __gcd(a,b) 来解决(求出 ab 的最大公约数)。

两个数都除以最大公约数即可完成约分。

注意哦,该函数不能用于浮点型,该函数是属于 #include<algorithm> 里的。

Code

程序仅供参考,请不要抄呀。

#include <iostream>
#include <algorithm>
using namespace std;

int main()
{

    int a,b,c,x;//int 类型即可
    cin>>a>>b>>c;//输入
    x=__gcd(min(a,min(b,c)),max(a,max(b,c)));//__gcd求最大公因数
    //找出最长边(斜边)及最短边(满足正弦值最小) 
    cout<<min(a,min(b,c))/x<<"/"<<max(a,max(b,c))/x<<endl;//约分 
    return 0;
}

完结撒花。