1088. Rational Arithmetic (20)

来源:互联网 发布:mac口红如何辨别真假 编辑:程序博客网 时间:2024/06/06 03:06

For two rational numbers, your task is to implement the basic arithmetics, that is, to calculate their sum, difference, product and quotient.

Input Specification:

Each input file contains one test case, which gives in one line the two rational numbers in the format "a1/b1 a2/b2". The numerators and the denominators are all in the range of long int. If there is a negative sign, it must appear only in front of the numerator. The denominators are guaranteed to be non-zero numbers.

Output Specification:

For each test case, print in 4 lines the sum, difference, product and quotient of the two rational numbers, respectively. The format of each line is "number1 operator number2 = result". Notice that all the rational numbers must be in their simplest form "k a/b", where k is the integer part, and a/b is the simplest fraction part. If the number is negative, it must be included in a pair of parentheses. If the denominator in the division is zero, output "Inf" as the result. It is guaranteed that all the output integers are in the range of long int.

Sample Input 1:
2/3 -4/2
Sample Output 1:
2/3 + (-2) = (-1 1/3)2/3 - (-2) = 2 2/32/3 * (-2) = (-1 1/3)2/3 / (-2) = (-1/3)
Sample Input 2:
5/3 0/6
Sample Output 2:
1 2/3 + 0 = 1 2/31 2/3 - 0 = 1 2/31 2/3 * 0 = 01 2/3 / 0 = Inf
#include <iostream>#include <vector>#include <algorithm>using namespace std;long long lcd(long long  a,long long b){if(a< b){long long t=a;a=b;b=t;}long long r = a%b;while(r){a=b;b=r;r=a%b;}return b;}inline long long lcm(long long a,long long b){return a*b/lcd(a,b);}void print(long long n,long long d){bool sign=false;if(n < 0){n=-n;sign=true;}long long i=n/d;//integern%=d;//fractionif( n != 0){long long divisor=lcd(n,d);n/=divisor;d/=divisor;}if(sign){if( i == 0)n=-n;else i=-i;}if( i == 0 && n == 0){cout<<0;}else if( i != 0 && n == 0){if(i<0)cout<<"("<<i<<")";else cout<<i;}else if( i != 0 && n != 0){if(i<0)cout<<"("<<i<<" "<<n<<"/"<<d<<")";else cout<<i<<" "<<n<<"/"<<d;}else{if(n < 0)cout<<"("<<n<<"/"<<d<<")";else cout<<n<<"/"<<d;}}int main(){long long numerator1,denominator1,numerator2,denominator2,res_numerator,res_denominator;cin>>numerator1;getchar();cin>>denominator1;cin>>numerator2;getchar();cin>>denominator2;// +res_denominator=lcm(denominator1,denominator2);res_numerator=res_denominator/denominator1*numerator1+res_denominator/denominator2*numerator2;print(numerator1,denominator1);cout<<" + ";print(numerator2,denominator2);cout<<" = ";print(res_numerator,res_denominator);cout<<endl;// -res_numerator=res_denominator/denominator1*numerator1-res_denominator/denominator2*numerator2;print(numerator1,denominator1);cout<<" - ";print(numerator2,denominator2);cout<<" = ";print(res_numerator,res_denominator);cout<<endl;// *res_numerator=numerator1 * numerator2;res_denominator=denominator1*denominator2;print(numerator1,denominator1);cout<<" * ";print(numerator2,denominator2);cout<<" = ";print(res_numerator,res_denominator);cout<<endl;// /if(numerator2 != 0){if(numerator1 * numerator2 >= 0){res_numerator=numerator1*denominator2>0?numerator1*denominator2:-numerator1*denominator2;res_denominator=denominator1*numerator2>0?denominator1*numerator2:-denominator1*numerator2;}else{res_numerator=numerator1*denominator2>0?-numerator1*denominator2:numerator1*denominator2;res_denominator=denominator1*numerator2>0?denominator1*numerator2:-denominator1*numerator2;}print(numerator1,denominator1);cout<<" / ";print(numerator2,denominator2);cout<<" = ";print(res_numerator,res_denominator);cout<<endl;}else{print(numerator1,denominator1);cout<<" / ";print(numerator2,denominator2);cout<<" = ";cout<<"Inf";cout<<endl;}system("pause");return 0;}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小米n充电关机开机不了怎么办? 关机后强制刷机怎么办 红米手机开机画面怎么办 红米note1无法清理数据怎么办 红米2a密码忘记怎么办 线刷也不成功该怎么办 红米2开不了机怎么办 魅族无限重启怎么办 坚果pro无法双清怎么办 usb外置网卡网速慢怎么办? 无线路由器被改密码怎么办 电脑打不开flv格式的视频怎么办 电脑打不开pdf格式的文件怎么办 pdf格式在电脑上打不开怎么办 zip压缩的时候空间不足怎么办 电子发票填抬头错了怎么办 发票写错一个字怎么办 普票税率开错了怎么办 税率开错为17了怎么办 电子发票抬头错了怎么办 发票抬头错了一个字怎么办 5月税率开错了怎么办 如果发票是假的怎么办 发票收款人名字写错了怎么办 医院发票名字写错了怎么办 购买方发票联丢失怎么办 市中区超市办理发票怎么办 发票购买薄丢了怎么办 发票领用簿丢了怎么办 摩托车证扣12分怎么办 初中孩孑想扩展单词量怎么办 恒安保险倒闭了怎么办 小麦收割机卸粮筒总是转怎么办 非牛顿体结块了怎么办 非牛顿流体硬了怎么办 玩具枪子弹打到眼睛怎么办 杭州磨床7130噪音大怎么办 步兵太苦还有一年怎么办 检法事业编怎么办最新 河北省事业单位改企编制怎么办 梦飞去虎牙锐雯怎么办