您的位置:首页 > 其它

分数加减法 poj 3979

2014-08-02 09:22 246 查看
分数加减法

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次后终于明白了-_-|||-_-|||-_-|||
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: