三角函数

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

输入格式

一行,包含三个数,即勾股数 a,b,c(任意顺序)。

输出格式

一行,包含一个数,即最小锐角的正弦值。

输出时每行末尾的多余空格,不影响答案正确性

样例输入

3 5 4

样例输出

3/5

 

知识点:

欧几里德算法又称辗转相除法,是指用于计算两个正整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式gcd(a,b) = gcd(b,a mod b)。

 

辗转相除法是利用以下性质来确定两个正整数 a 和 b 的最大公因子的:

⒈ 若 r 是 a ÷ b 的余数,且r不为0, 则

gcd(a,b) = gcd(b,r)

⒉ a 和其倍数之最大公因子为 a。

另一种写法是:

⒈ 令r为a/b所得余数(0≤r<b)

若 r= 0,算法结束;b 即为答案。

⒉ 互换:置 a←b,b←r,并返回第一步。

代码:

#include<bits/stdc++.h>    //万能库 
using namespace std;
int main()
{
    int a[4];    //数组用来存储三角形三条边    
    for (int i=0;i<3;i++)    //因为是勾股数 一共只有三个数 所以循环三次来读入三个数 
    {
        cin>>a[i];    //把数都存在一个数组 
    }
    sort(a,a+3);    //把三个数从小到大排列 此时a[0]就是最小直角边 a[2]为斜边
    cout<<a[0]/__gcd(a[0],a[2])<<'/'<<a[2]/__gcd(a[0],a[2]);      //因为要约分 所以用gcd(a[0],a[2])取a[0]与a[2]的最大公约数
                                                                 // a[0]/最大公约数的值与a[2]/最大公约数的比值即是约分后的结果 
    return 0;
}

 

posted @ 2020-04-19 23:29  多发Paper哈  阅读(168)  评论(0编辑  收藏  举报
Live2D