生活随笔
收集整理的這篇文章主要介紹了
nyoj_111_分数加减法_201311281341
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
分數加減法
時間限制:
3000 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 來源
水題比賽上傳者
hzyqazasdf 1 #include <stdio.h>
2
3 int gcd(
int a,
int b)
4 {
5 int i,t;
6 if(a>
b)
7 {
8 t=a;a=b;b=
t;
9 }
10 while(a)
11 {
12 i=
a;
13 a=b%
a;
14 b=
i;
15 }
16 return b;
17 }
18
19 int main()
20 {
21 char s[
10];
22 while(gets(s))
23 {
24 int i;
25 int a,b1,b2;
26 int t1,t2;
27 //printf("%d\n",gcd(6,4));
28 a=(s[
2]-
'0')*(s[
6]-
'0')/gcd((s[
2]-
'0'),(s[
6]-
'0'));
29 b1=a/(s[
2]-
'0')*(s[
0]-
'0');
30 b2=a/(s[
6]-
'0')*(s[
4]-
'0');
31 if(s[
3]==
'-'){
32 if(b1<
b2)
33 {
34 t1=b2-
b1;
35 t2=
gcd(t1,a);
36 if(t1==
0)
37 printf(
"%d\n",
0);
38 else
39 {
40 printf(
"-");
41 printf(
"%d/%d\n",t1/t2,a/
t2);
42 }
43 }
44 else
45 {
46 t1=b1-
b2;
47 t2=
gcd(t1,a);
48 if(t1==
0)
49 printf(
"%d\n",
0);
50 else
51 printf(
"%d/%d\n",t1/t2,a/
t2);
52 }
53 }
54 else
55 {
56 t1=b2+
b1;
57 t2=
gcd(t1,a);
58 if(t1%a==
0)
59 printf(
"%d\n",t1/
a);
60 else
61 printf(
"%d/%d\n",t1/t2,a/
t2);
62 }
63 }
64 return 0;
65 }
?
簡單題
轉載于:https://www.cnblogs.com/xl1027515989/p/3447833.html
總結
以上是生活随笔為你收集整理的nyoj_111_分数加减法_201311281341的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。