题目描述
输入一组勾股数(a,b,c(a≠b≠c)),用分数格式输出其较小锐角的正弦值。(要求约分。)
输入格式
一行,包含三个正整数,即勾股数a, b, c(无大小顺序)。
输出格式
一行,包含一个分数,即较小锐角的正弦值
输入输出样例
输入
3 5 4
输出
3/5
本题重点在于最后结果的约分,可以使用辗转相除法(欧几里得算法)。两个整数的最大公约数等于其中较小的数和两数相除余数的最大公约数,逐次使用前一个除数除以余数,直至余数为零为止,最大公约数就是最后一个除数。
#include<stdio.h>
int main()
{
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
int t = 0;
//从小到大排序
if (a > b)
{
t = a;
a = b;
b = t;
}
if (a > c)
{
t = a;
a = c;
c = t;
}
//前两个if语句判断之后,可以保证a为最小的数,再继续判断一次b和c的大小
if (b > c)
{
t = b;
b = c;
c = t;
}
//辗转相除法,前一个除数除以余数,直至余数为零,最大公约数就是最好一个除数
int x = a, y = c;
while (x)
{
int r = 0;
r = y % x;
y = x;
x = r;
}
a = a / y;
c = c / y;
printf("%d/%d\n", a, c);
return 0;
}