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("\n");
 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("\n");
 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("\n");
 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\n");
 80     else{
 81         if(a2<0){
 82             a2=-a2;
 83             a1=-a1;
 84         }
 85         print(a1*b2,b1*a2);
 86         printf("\n");
 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 }


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

时间: 2024-10-14 05:29:30

PAT乙级1034. 有理数四则运算(20)的相关文章

PAT-乙级-1034. 有理数四则运算(20)

1034. 有理数四则运算(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求编写程序,计算2个有理数的和.差.积.商. 输入格式: 输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为0. 输出格式: 分别在4行中按照“有理数1 运算符 有理数2 = 结果”的格式顺序输出2个有理数的和.差.积.商.注意输出

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

本题要求编写程序,计算2个有理数的和.差.积.商. 输入格式: 输入在一行中按照"a1/b1 a2/b2"的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为0. 输出格式: 分别在4行中按照"有理数1 运算符 有理数2 = 结果"的格式顺序输出2个有理数的和.差.积.商.注意输出的每个有理数必须是该有理数的最简形式"k a/b",其中k是整数部分,a/b是最简分数部分:若为负数,则须加括号:若除法

PAT1034 有理数四则运算 (20分)

1034 有理数四则运算 (20分) 本题要求编写程序,计算 2 个有理数的和.差.积.商. 输入格式: 输入在一行中按照 a1/b1 a2/b2 的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为 0. 输出格式: 分别在 4 行中按照 有理数1 运算符 有理数2 = 结果 的格式顺序输出 2 个有理数的和.差.积.商.注意输出的每个有理数必须是该有理数的最简形式 k a/b,其中 k 是整数部分,a/b 是最简分数部分:若为负数,则须加括号:

PAT 1034. 有理数四则运算

PAT 1034. 有理数四则运算 本题要求编写程序,计算2个有理数的和.差.积.商. 输入格式: 输入在一行中按照"a1/b1 a2/b2"的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为0. 输出格式: 分别在4行中按照"有理数1 运算符 有理数2 = 结果"的格式顺序输出2个有理数的和.差.积.商.注意输出的每个有理数必须是该有理数的最简形式"k a/b",其中k是整数部分,a/b是最简分

PAT乙级-1057. 数零壹(20)

给定一串长度不超过105的字符串,本题要求你将其中所有英文字母的序号(字母a-z对应序号1-26,不分大小写)相加,得到整数N,然后再分析一下N的二进制表示中有多少0.多少1.例如给定字符串"PAT (Basic)",其字母序号之和为:16+1+20+2+1+19+9+3=71,而71的二进制是1000111,即有3个0.4个1. 输入格式: 输入在一行中给出长度不超过105.以回车结束的字符串. 输出格式: 在一行中先后输出0的个数和1的个数,其间以空格分隔. 输入样例: PAT (

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

本题要求编写程序,计算2个有理数的和.差.积.商. 输入格式: 输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为0. 输出格式: 分别在4行中按照“有理数1 运算符 有理数2 = 结果”的格式顺序输出2个有理数的和.差.积.商.注意输出的每个有理数必须是该有理数的最简形式“k a/b”,其中k是整数部分,a/b是最简分数部分:若为负数,则须加括号:若除法分母为0,则输出“Inf”.题目保证正确的输出中没

PAT-B 1034. 有理数四则运算

题目内容: 本题要求编写程序,计算2个有理数的和.差.积.商. 输入格式: 输入在一行中按照"a1/b1 a2/b2"的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为0. 输出格式: 分别在4行中按照"有理数1 运算符 有理数2 = 结果"的格式顺序输出2个有理数的和.差.积.商.注意输出的每个有理数必须是该有理数的最简形式"k a/b",其中k是整数部分,a/b是最简分数部分:若为负数,则须加

PAT 乙级 1009 说反话 (20) C++版

1009. 说反话 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串.字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格. 输出格式:每个测试用例的输出占一行,输出倒序后的句子. 输入

PAT乙级1027. 打印沙漏(20)

本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号:各行符号中心对齐:相邻两行符号数差2:符号数先从大到小顺序递减到1,再从小到大顺序递增:首尾符号数相等. 给定任意N个符号,不一定能正好组成一个沙漏.要求打印出的沙漏能用掉尽可能多的符号. 输入格式: 输入在一行给出1个正整数N(<=1000)和一个符号,中间以空格分隔. 输出格式: 首先打印出由给定符号组成的最大的沙漏形