P1888 【三角函數】
傳送門
題目描述
輸入一組勾股數a,b,c (a≠b≠c ),用分數格式輸出其較小銳角的正弦值。(要求約分。)
輸入輸出格式
輸入格式:
一行,包含三個數,即勾股數a,b,c (無大小順序)。
輸出格式:
一行,包含一個數,即較小銳角的正弦值
輸入輸出樣例
輸入樣例#1:
3 5 4
輸出樣例#1:
3/5
說明
數據區間11 ~10^9
抽點空,來發一篇水題題解。希望能幫助剛剛學c++ 的同學。(突然忘記自己身份--小菜雞,請dalao 不要介意)
來我們一起先看題。
目標:找到最小值和最大值,再約分。
數據範圍不大,用int 就可以解決了。
求最大值與最小值,分別用max 函數和min 函數。
約分要求最大公約數,用gcd 函數完成。
開講思路:
1.求最大值與最小值
2.約分要求最大公約數
3.別忘記輸出時要除最大公約數
max 函數:
int max(int x,int y)
{
return x>y?x:y;
}
min 函數:
int min(int x,int y)
{
return x<y?x:y;
}
gcd 函數:
int gcd(int a, int b)
{
return a==0?b:gcd(b%a,a);
}
上ACAC (100% )代碼:
#include<cstdio>//調用 scanf和printf 庫
int a,b,c,x,y,z;//輸入a,b,c x最大值 y最小值 z最大公約數
int max(int x,int y){ return x>y?x:y; }//求最大值
int min(int x,int y){ return x<y?x:y; }//求最小值
int gcd(int a, int b){ return a==0?b:gcd(b%a,a); }//求最大公約數
int main()//主函數 美好的開始
{
scanf("%d %d %d",&a,&b,&c);//輸入三個數
x=max(a,max(b,c));//求最大值並存入x中
y=min(a,min(b,c));//求最小值並存入y中
z=gcd(x,y);//求最大公約數並存入z中
printf("%d/%d",y/z,x/z);//輸出
return 0;//美好的結束
}