P1888 三角函数

题目

描述

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

输入格式

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

输出格式

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

输入输出样例

输入 输出
3 5 4 3/5

解答

解法一

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

int a,b,c;
int g;
int gcd(int a,int b);

int main()
{
    cin>>a>>b>>c;	
	if(a>b) swap(a,b); //排序
	if(a>c) swap(a,c);
	if(b>c) swap(b,c);
	
	g=gcd(a,c);
	
	cout<<a/g<<'/'<<c/g;

    return 0;
}

int gcd(int a,int b) //辗转相除法 求公约数
{
    int r;
    while(b>0) {
        r=a%b;
        a=b;
        b=r;
    }
    return a;
}

解法二

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

int a[3];
int gcd;
int main()
{
    cin>>a[0]>>a[1]>>a[2];
    sort(a,a+3);          //快速排序
    gcd=__gcd(a[0],a[2]); //内置函数,求两数的最大公约数
    cout<<a[0]/gcd<<'/'<<a[2]/gcd;
    
    return 0;
}
posted @ 2021-04-02 16:30  CodeSpark  阅读(139)  评论(0编辑  收藏  举报