分数的四则运算
分數(shù)的四則運算指的是分數(shù)的加減乘除
目錄
- 分數(shù)的表示和化簡
- 分數(shù)的加法
- 分數(shù)的減法
- 分數(shù)的乘法
- 分數(shù)的除法
- 分數(shù)的輸出
分數(shù)的表示和化簡
分數(shù)的表示:
對于一個分數(shù)來說,最簡潔的寫法就是寫成假分數(shù)的形式,即無論分子比分母大或者小,都保留其原數(shù)。
因此可以使用一個結構體來存儲這種只有分子和分母的分數(shù):
于是就可以定義Fraction類型的變量來表示分數(shù),或者定義數(shù)組來表示一堆分數(shù)。
其中需要對這種表示制定三項規(guī)則:
- 使down為非負數(shù)。如果分數(shù)為負,那么令分子up為負即可。
- 如果該分數(shù)恰為0,那么規(guī)定其分子為0,分母為1。
- 分子和分母沒有除了1以外的公約數(shù)。
分數(shù)的化簡:
分數(shù)的化簡主要用來使Fraction變量滿足分數(shù)表示的三項規(guī)定,因此化簡步驟也分為以下三步:
- 如果分母down為負數(shù),那么令分子up和分母down都變?yōu)橄喾磾?shù)。
- 如果up為0,那么令分母為down為1
- 約分:求出分子絕對值與分母絕對值的最大公約數(shù)d,然后令分子分母同時除以d。
分數(shù)的加法
Fraction add(Fraction a,Fraction b) {Fraction result;result.up=a.up*b.down+b.up*a.down;//分數(shù)和的分子 result.down=a.down*b.down;//分數(shù)和的分母 return reduction(result); //返回和的結果,注意化簡 }分數(shù)的減法
Fraction minu(Fraction a,Fraction b) {Fraction result;result.up=a.up*b.down-b.up*a.down;result.down=a.down*b.down;return reduction(result); //返回的結果,注意化簡 }分數(shù)的乘法
Fraction multi(Fraction a,Fraction b) {Fraction result;result.up=a.up*b.up;result.down=a.down*b.down;return reduction(result); //返回的結果,注意化簡 }分數(shù)的除法
Fraction divide(Fraction a,Fraction b) {Fraction result;result.up=a.up*b.down;result.down=a.down*b.up;printf("%d %d",result.up,result.down);return reduction(result); }分數(shù)的輸出
分數(shù)的輸出根據(jù)題目的要求進行,但是大體上有以下幾個注意點:
- 輸出分數(shù)前,需要先對其進行化簡。
- 如果分數(shù) r 的分母為down為1,說明該分數(shù)是整數(shù),一般來說題目會要求直接輸出分子,而省略分母的輸出。
- 如果分數(shù) r 的分子up的絕對值大于分母down, 說明該分數(shù)是假分數(shù),此時應按帶分數(shù)的形式輸出,即整數(shù)部分為r.up/r.down,
分子部分為abs(r.up)%r.down, 分母部分為r.down。 - 以上均不滿足說明分數(shù) r 是真分數(shù),按原例輸出即可。
強調一點:由于分數(shù)的乘法和除法的過程中可能使分子或分母超過int型表示范圍,
因此一般情況下,分子和分母應當使用long long 存儲。
總結
- 上一篇: 跟素数相关的题
- 下一篇: 数学问题->分数的四则运算