分数加减法(POJ3979)

2015-01-27 05:59:58 · 作者: · 浏览: 4
分数加减法
Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 12564 Accepted: 4194

Description

编写一个C程序,实现两个分数的加减法

Input

输入包含多行数据
每行数据是一个字符串,格式是"a/boc/d"。

其中a, b, c, d是一个0-9的整数。o是运算符"+"或者"-"。

数据以EOF结束
输入数据保证合法

Output

对于输入数据的每一行输出两个分数的运算结果。
注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数

Sample Input

1/8+3/8
1/4-1/2
1/3-1/3

Sample Output

1/2
-1/4
0
#include
   
    
#include
    
      #include
     
       using namespace std; int gcd(int a,int b) { return b==0?a:gcd(b,a%b); } int main() { int a,b,c,d,x,y,sum,k,t; char s; while(scanf("%d/%d%c%d/%d",&a,&b,&s,&c,&d)!=EOF) { if(s=='+') { x=a*d+b*c; y=b*d; k=x/gcd(x,y); t=y/gcd(x,y); if(t==1) printf("%d\n",k); else { printf("%d/%d\n",k,t); } } else { x=a*d-b*c; y=b*d; if(x==0) printf("0\n"); else{ k=x/gcd(x,y); t=y/gcd(x,y); if(t==1) printf("%d\n",k); else { if(x>0) printf("%d/%d\n",k,t); else printf("%d/%d\n",k*-1,t*-1);} } } } return 0; }