本題要求編寫程式,計算2個有理數的和、差、積、商。
輸入格式:
輸入在一行中按照「a1/b1 a2/b2」的格式給出兩個分數形式的有理數,其中分子和分母全是整型範圍內的整數,負號只可能出現在分子前,分母不為0。
輸出格式:
分別在4行中按照「有理數1 運算子 有理數2 = 結果」的格式順序輸出2個有理數的和、差、積、商。注意輸出的每個有理數必須是該有理數的最簡形式「k a/b」,其中k是整數部分,a/b是最簡分數部分;若為負數,則須加括號;若除法分母為0,則輸出「inf」。題目保證正確的輸出中沒有超過整型範圍的整數。
輸入樣例1:
2/3 -4/2
輸出樣例1:
2/3 + (-2) = (-1 1/3)
2/3 - (-2) = 2 2/3
2/3 * (-2) = (-1 1/3)
2/3 / (-2) = (-1/3)
輸入樣例2:
5/3 0/6
輸出樣例2:
1 2/3 + 0 = 1 2/3
1 2/3 - 0 = 1 2/3
1 2/3 * 0 = 0
1 2/3 / 0 = inf
把各個功能盡量拆分,這樣比較清楚明了,比較容易考慮到異常情況。
能使用迴圈就盡量使用迴圈;
還有使用long long型整數,相應的scanf中使用%lld;
**參考了@luoluo,連線@luoluo
#include
#include
#include
using
namespace
std;
long
long max_divisor(long
long a, long
long b)
void print(long
long a, long
long b)
if (a == 0)
if (a < 0)
cout
<< "(";
if (b == 1)
else
else
}if (a < 0)
cout
<< ")";
}void func(long
long &a, long
long &b)
}int main()
if (c[i] == '-')
if (c[i] == '*')
if (c[i] == '/')
func(a, b);
print(a, b);
cout
<< endl;
}system("pause");
return
0;}
PAT 乙級練習題 1005
當我們驗證卡拉茲猜想的時候,為了避免重複計算,可以記錄下遞推過程中遇到的每乙個數。例如對n 3進行驗證的時候,我們需要計算3 5 8 4 2 1,則當我們對n 5 8 4 2進行驗證的時候,就可以直接判定卡拉茲猜想的真偽,而不需要重複計算,因為這4個數已經在驗證3的時候遇到過了,我們稱5 8 4 2...
PAT 乙級練習題 1007
讓我們定義 dn 為 dn pn 1 pn,其中 pi 是第i個素數。顯然有 d1 1 且對於n 1有 dn 是偶數。素數對猜想 認為 存在無窮多對相鄰且差為2的素數 現給定任意正整數n 105 請計算不超過n的滿足猜想的素數對的個數。輸入格式 每個測試輸入包含1個測試用例,給出正整數n。輸出格式 ...
PAT乙級練習題 1010
設計函式求一元多項式的導數。注 x n n為整數 的一階導數為n x n 1 輸入格式 以指數遞降方式輸入多項式非零項係數和指數 絕對值均為不超過1000的整數 數字間以空格分隔。輸出格式 以與輸入相同的格式輸出導數多項式非零項的係數和指數。數字間以空格分隔,但結尾不能有多餘空格。注意 零多項式 的...