pat乙级1034
来源:互联网 发布:淘宝描述图片怎么编辑 编辑:程序博客网 时间:2024/06/09 21:09
- 有理数四则运算(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
#include<iostream>#include<cstdio>using namespace std;long long int a,b,c,d;long long int gcd(long long int m,long long int n){ return n==0?m:gcd(n,m%n); //辗转相除求最大公约数 }void func(long long int m,long long int n){ int flag1=1,flag2=1,flag=1; // 默认m.n,m/n的符号都>0 if(n==0) { cout<<"Inf"; return ; } if(m==0) { cout<<0; return ; } if(m<0) { flag1=0; m=0-m;} //以上两步之后 m,n都变为正数,所以下面符号判断只有flag可以进行 if(n<0) { flag2=0; n=0-n;} if(flag1==0&&flag2==0){ flag=1; }else if(flag1==0||flag2==0){ flag=0; } long long int x=gcd(m,n); m/=x; n/=x; //化简到最简式 long long int t1=m/n; long long int t2=m%n; if(t2==0){ if(flag==1){ cout<<t1; return ; }else{ cout<<"(-"<<t1<<")"; return ; } } if(m==n){ if(flag==1){ cout<<1; return ; }else{ cout<<"(-1)"; return ; } }else if(m<n){ if(flag==1){ cout<<m<<"/"<<n; return ; }else{ cout<<"(-"<<m<<"/"<<n<<")"; return ; } }else { if(flag==1){ cout<<t1<<" "<<t2<<"/"<<n; return ; }else{ cout<<"(-"<<t1<<" "<<t2<<"/"<<n<<")"; return ; } } }void add(){ long long int m,n; m=a*d+b*c; n=b*d; func(a,b); cout<<" + "; func(c,d); cout<<" = " ; func(m,n); cout<<endl;} void min(){ long long int m,n; m=a*d-b*c; n=b*d; func(a,b); cout<<" - "; func(c,d); cout<<" = "; func(m,n); cout<<endl;}void multi(){ long long int m,n; m=a*c; n=b*d; func(a,b); cout<<" * "; func(c,d); cout<<" = "; func(m,n); cout<<endl;}void div(){ long long int m,n; m=a*d; n=b*c; func(a,b); cout<<" / "; func(c,d); cout<<" = "; func(m,n); cout<<endl;}int main(){ scanf("%lld/%lld %lld/%lld",&a,&b,&c,&d); add(); min(); multi(); div(); return 0;}
0 0
- PAT乙级1034
- pat乙级1034
- PAT乙级 1034
- PAT 乙级 1034
- PAT乙级 1004. 成绩排名
- PAT乙级 月饼 (25)
- PAT乙级 人口普查(20)
- PAT 乙级 1020.月饼
- PAT乙级1001
- PAT乙级1002
- PAT 乙级 1028.人口普查
- PAT乙级1003
- pat乙级总结
- PAT乙级1010-月饼
- PAT乙级题解
- PAT 乙级 1001
- PAT乙级 1001
- PAT 乙级1003
- android:allowbackup="true"
- 爬虫-java-百度--入门
- 转载CSDN中的博客方法
- 5-15 球队“食物链” (30分) -- L3-015. 球队“食物链” (2017天梯初赛 剪枝dfs)
- 多线程操作控件文本
- pat乙级1034
- React-Native AsyncStorage使用
- 蓝桥杯 错误票据
- Pycharm远程调试之Docker debug(三) -- docker on linux
- 分治法求最大子数组
- js:全局变量
- 雷达覆盖(normal)(SSL1232)
- 删除链表中倒数第n个节点
- 移动端iscroll局部滑动效果的实现及遇到的问题