分数加减法 poj 3979

来源:互联网 发布:电脑重装数据恢复 编辑:程序博客网 时间:2024/05/30 23:03


分数加减法
Time Limit: 1000MS  Memory Limit: 65536K
Total Submissions: 12238  Accepted: 4085

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
Source


/*
几组测试数据

0/9+5/1
5

0/9-5/1
-5
5/1+4/1
9
9/2-1/2
4
0/1+0/5
0
1/2+1/2
1
1/8+7/8
18/0+6/0
跳出

*/
#include<cstdio>
#include<math.h>
#include<stdlib.h>
int gcd(int a,int b)
{
 return b?gcd(b,a%b):a;
}
int main()
{
 int a,b,c,d;
 char o;
 while(~scanf("%d%/%d%c%d%/%d",&a,&b,&o,&c,&d))
 {
  int e,f;
  if(b==0||d==0)
    break;
  else
  {f=b*d;
  
   if(o=='+')
     e=a*d+b*c;
    else if(o=='-')
      e=a*d-b*c;
     
    if(e%f==0)
      printf("%d\n",e/f);
      else if(e==0)
        printf("0\n");
        else if(e<0)
          printf("%d/%d\n",e/abs(gcd(e,f)),f/abs(gcd(e,f)));
        else
          printf("%d/%d\n",e/gcd(e,f),f/gcd(e,f));
  }
 }
 return 0;
}

 

WA3次后终于明白了-_-|||-_-|||-_-|||

0 0
原创粉丝点击