NYOJ 111 分數加減法

2021-08-16 18:21:09 字數 989 閱讀 5906

時間限制:

1000 ms  |  記憶體限制:

65535 kb

難度:2描述

編寫乙個c程式,實現兩個分數的加減法輸入

輸入包含多行資料 

每行資料是乙個字串,格式是"a/boc/d"。 

其中a, b, c, d是乙個0-9的整數。o是運算子"+"或者"-"。 

資料以eof結束 

輸入資料保證合法

輸出對於輸入資料的每一行輸出兩個分數的運算結果。 

注意結果應符合書寫習慣,沒有多餘的符號、分子、分母,並且化簡至最簡分數

樣例輸入

1/8+3/8

1/4-1/2

1/3-1/3

樣例輸出

1/2

-1/4

0

分析:注意負數的問題和最後結果如果可以化成乙個正數的情況。

#include#include#include#include#includeusing namespace std;

int find(int u,int v)

}return u;

}int main()

if(s=='-')///讓分子做加減法

x=a-c;

if(s=='+')

x=a+c;

if(x==0||(d==0&&b==0))///如果最後結果的分母是0或者兩個分母都是0的話,那結果就是0

else if(x<0)///如果分子做運算的時候結果是個負數的情況

int p=find(b,x);///找分子分母的最大公因數,然後化簡

b/=p;

x/=p;

if(b==1)///如果最後將分母化為1了,那麼直接輸出分子就好,但要注意是否為負數的情況

else///否則得話,就直接輸出化簡後的分子分母,注意正負號

}return 0;

}

nyoj 111 分數加減法

分數加減法 時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述 編寫乙個c程式,實現兩個分數的加減法 輸入輸入包含多行資料 每行資料是乙個字串,格式是 a boc d 其中a,b,c,d是乙個0 9的整數。o是運算子 或者 資料以eof結束 輸入資料保證合法輸出對於輸入資料的每一...

nyoj111分數加減法

這道題大慨我做了兩個多小時,wa了好幾次,最後才找出問題出在哪,1 我沒有考慮到分子可以整除分母,這時應該輸出乙個整數,而我一直輸出分式,這就必錯無疑了。2 剛開始沒考慮到要化簡,導致錯誤。3 不明白它的以eof結尾是什麼意思,事實上有兩種方式,一種是c中的 char s 1000 while sc...

NYOJ 111 分數加減法

時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述 編寫乙個c程式,實現兩個分數的加減法 輸入 輸入包含多行資料 每行資料是乙個字串,格式是 a boc d 其中a,b,c,d是乙個0 9的整數。o是運算子 或者 資料以eof結束 輸入資料保證合法 輸出 對於輸入資料的每一行輸出...