zoukankan      html  css  js  c++  java
  • PAT乙级1034. 有理数四则运算(20)

    本题要求编写程序,计算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/3
    2/3 * (-2) = (-1 1/3)
    2/3 / (-2) = (-1/3)
    

    输入样例2:

    5/3 0/6
    

    输出样例2:

    1 2/3 + 0 = 1 2/3
    1 2/3 - 0 = 1 2/3
    1 2/3 * 0 = 0
    1 2/3 / 0 = Inf
    

      1 #include<stdio.h>
      2 int gong(long long a,long long b)
      3 {
      4     long long r,min,max;
      5     min=(a>b)?b:a;
      6     max=(a>b)?a:b;
      7     r=max%min;
      8     while(r)
      9     {
     10         max=min;
     11         min=r;
     12         r=max%min;
     13     }
     14     return min;
     15 }
     16 void print(long long a,long long b)
     17 {
     18     long long flag=0,c,d,e;
     19     if(a<0){
     20         a=-a;
     21         flag=1;
     22     }
     23     if(a==0) printf("0");
     24     else{
     25         e=gong(a,b);
     26         a/=e;
     27         b/=e;
     28         c=a/b;
     29         d=a%b;
     30         if(flag==0){
     31             if(d==0) printf("%lld",c);
     32             else{
     33                 if(c==0) printf("%lld/%lld",a,b);
     34                 else printf("%lld %lld/%lld",c,d,b);
     35             }
     36         }
     37         else{
     38             if(d==0) printf("(-%lld)",c);
     39             else{
     40                 if(c==0) printf("(-%lld/%lld)",a,b);
     41                 else printf("(-%lld %lld/%lld)",c,d,b);
     42             }
     43         }
     44     }
     45 }
     46 void add(long long a1,long long b1,long long a2,long long b2)
     47 {
     48     print(a1,b1);
     49     printf(" + ");
     50     print(a2,b2);
     51     printf(" = ");
     52     print(a1*b2+a2*b1,b1*b2);
     53     printf("
    ");
     54 }
     55 void minus(long long a1,long long b1,long long a2,long long b2)
     56 {
     57     print(a1,b1);
     58     printf(" - ");
     59     print(a2,b2);
     60     printf(" = ");
     61     print(a1*b2-a2*b1,b1*b2);
     62     printf("
    ");
     63 }
     64 void muilt(long long a1,long long b1,long long a2,long long b2)
     65 {
     66     print(a1,b1);
     67     printf(" * ");
     68     print(a2,b2);
     69     printf(" = ");
     70     print(a1*a2,b1*b2);
     71     printf("
    ");
     72 }
     73 void divide(long long a1,long long b1,long long a2,long long b2)
     74 {
     75     print(a1,b1);
     76     printf(" / ");
     77     print(a2,b2);
     78     printf(" = ");
     79     if(a2==0) printf("Inf
    ");
     80     else{
     81         if(a2<0){
     82             a2=-a2;
     83             a1=-a1;
     84         }
     85         print(a1*b2,b1*a2);
     86         printf("
    ");
     87     }
     88 }
     89 int main()
     90 {
     91     long long a1,b1,a2,b2;
     92     while(~scanf("%lld/%lld %lld/%lld",&a1,&b1,&a2,&b2))
     93     {
     94         add(a1,b1,a2,b2);
     95         minus(a1,b1,a2,b2);
     96         muilt(a1,b1,a2,b2);
     97         divide(a1,b1,a2,b2);
     98     }
     99     return 0;
    100 }

  • 相关阅读:
    eclipse 不自动提示和Alt + / 没提示和eclipse增强代码提示
    uboot 添加命令
    ps and kill command
    C 类型volatile 的作用
    git tutorial
    python 与命令
    C++ new and delete
    Glade3 tutorial in chinese
    查找IP与MAC
    ns3 无线资料
  • 原文地址:https://www.cnblogs.com/Annetree/p/5863144.html
Copyright © 2011-2022 走看看