三角函数
输入一组勾股数 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;
}
因上求缘,果上努力~~~~ 作者:图神经网络,转载请注明原文链接:https://www.cnblogs.com/BlairGrowing/p/12735051.html