1034. 有理数四则运算(20)

来源:互联网 发布:手机后期软件 编辑:程序博客网 时间:2024/06/05 08:38

1034. 有理数四则运算(20)

时间限制
200 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue

本题要求编写程序,计算2个有理数的和、差、积、商。

输入格式:

输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为0。

输出格式:

分别在4行中按照“有理数1 运算符 有理数2 = 结果”的格式顺序输出2个有理数的和、差、积、商。注意输出的每个有理数必须是该有理数的最简形式“k a/b”,其中k是整数部分,a/b是最简分数部分;若为负数,则须加括号;若除法分母为0,则输出“Inf”。题目保证正确的输出中没有超过整型范围的整数。

输入样例1:
2/3 -4/2
输出样例1:
2/3 + (-2) = (-1 1/3)2/3 - (-2) = 2 2/32/3 * (-2) = (-1 1/3)2/3 / (-2) = (-1/3)
输入样例2:
5/3 0/6
输出样例2:
1 2/3 + 0 = 1 2/31 2/3 - 0 = 1 2/31 2/3 * 0 = 01 2/3 / 0 = Inf

提交代码


/*巨烦的模拟题 */#include <stdio.h>  #include <math.h>    long calgongyueshu(long m, long n)  {      long temp;        while(m % n != 0)      {          temp = n;          n = m % n;          m = temp;      }        return n;  }    void printfenshu (long fenzi, long fenmu)  {      if(fenzi % fenmu == 0)      {          if(fenzi/fenmu < 0)              printf("(%lld)", fenzi/fenmu);          else              printf("%lld", fenzi/fenmu);      }      else      {          long zhengshu = fenzi/fenmu;          fenzi = fenzi % fenmu;          long gys = calgongyueshu(fenzi, fenmu);          if(gys < 0)              gys = -gys;          fenzi /= gys;          fenmu /= gys;          if(zhengshu == 0)          {              if(fenzi < 0)                  printf("(%lld/%lld)", fenzi, fenmu);              else                  printf("%lld/%lld", fenzi, fenmu);          }          else          {              if(zhengshu < 0)                  printf("(%lld %lld/%lld)", zhengshu, -fenzi, fenmu);              else                  printf("%lld %lld/%lld", zhengshu, fenzi, fenmu);          }      }  }    void printexpress(long fenzi1, long fenmu1, long fenzi2,long fenmu2, char op)  {      printfenshu(fenzi1, fenmu1);      printf(" %c ", op);      printfenshu(fenzi2, fenmu2);      printf(" = ");  }    void add(long fenzi1,long fenmu1,long fenzi2,long fenmu2)  {      printexpress(fenzi1, fenmu1, fenzi2, fenmu2, '+');      printfenshu(fenzi1*fenmu2+fenzi2*fenmu1, fenmu1*fenmu2);      printf("\n");  }    void sub(long  fenzi1, long fenmu1,long fenzi2, long fenmu2)  {      printexpress(fenzi1, fenmu1, fenzi2, fenmu2, '-');      printfenshu(fenzi1*fenmu2-fenzi2*fenmu1, fenmu1*fenmu2);      printf("\n");  }    void mul(long fenzi1, long fenmu1,long fenzi2,long fenmu2)  {      printexpress(fenzi1, fenmu1, fenzi2, fenmu2, '*');      printfenshu(fenzi1*fenzi2, fenmu1*fenmu2);      printf("\n");  }    void div(long fenzi1,long fenmu1, long fenzi2,long fenmu2)  {      long fenzi = fenzi1*fenmu2;      long fenmu = fenmu1*fenzi2;      if(fenmu < 0)      {          fenmu = -fenmu;          fenzi = -fenzi;      }      printexpress(fenzi1, fenmu1, fenzi2, fenmu2, '/');      if(fenmu != 0)          printfenshu(fenzi, fenmu);      else          printf("Inf");      printf("\n");  }    int main()  {      long fenzi1, fenmu1, fenzi2, fenmu2;      scanf("%lld/%lld %lld/%lld", &fenzi1, &fenmu1, &fenzi2, &fenmu2);        add(fenzi1, fenmu1, fenzi2, fenmu2);      sub(fenzi1, fenmu1, fenzi2, fenmu2);      mul(fenzi1, fenmu1, fenzi2, fenmu2);      div(fenzi1, fenmu1, fenzi2, fenmu2);            return 0;  }  


原创粉丝点击