luoguP1888 【三角函數】

P1888 【三角函數】

傳送門

題目描述

輸入一組勾股數a,b,c (abc ),用分數格式輸出其較小銳角的正弦值。(要求約分。)

輸入輸出格式

輸入格式:

一行,包含三個數,即勾股數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;//美好的結束
}
發佈了41 篇原創文章 · 獲贊 39 · 訪問量 5090
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章