输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分
母不为0。
分别在4行中按照“有理数1 运算符 有理数2 = 结果”的格式顺序输出2个有理数的和、差、积、商。注意输出的每个有理数必须是该有理数的
最简形式“k a/b”,其中k是整数部分,a/b是最简分数部分;若为负数,则须加括号;若除法分母为0,则输出“Inf”。题目保证正确的输出中
没有超过整型范围的整数。
5/3 0/6
1 2/3 + 0 = 1 2/3<br/>1 2/3 - 0 = 1 2/3<br/>1 2/3 * 0 = 0<br/>1 2/3 / 0 = Inf
input_n,input_m = input().split(' ') n_a,n_b = map(eval,input_n.split('/')) m_a,m_b = map(eval,input_m.split('/')) def gongyuefen_func(n_a,n_b,m_a,m_b): n_anew = n_a*m_b n_bnew = n_b*m_b m_anew = m_a*n_b m_bnew = m_b*n_b return n_anew,n_bnew,m_anew,m_bnew def yuefen_print_func(a,b): s = 1 d = min(abs(a),b) for k in range(1,d+1): if a%k == 0 and b%k == 0: s = k a_n = a//s b_n = b//s if a_n > 0: if b_n == 1: return str(a_n) if b_n != 1: if a_n>b_n: return str(a_n//b_n)+' '+str(a_n%b_n)+'/'+str(b_n) if a_n<b_n: return str(a_n)+'/'+str(b_n) if a_n < 0: if b_n == 1: return '('+'-'+str(abs(a_n))+')' if b_n != 1: if abs(a_n)>b_n: return '('+'-'+str(abs(a_n)//b_n)+' '+str(abs(a_n)%b_n)+'/'+str(b_n)+')' if abs(a_n)<b_n: return '('+'-'+str(abs(a_n))+'/'+str(b_n)+')' def jiafa_func(n_a,n_b,m_a,m_b): if n_a != 0 and m_a != 0: n_anew,n_bnew,m_anew,m_bnew = gongyuefen_func(n_a,n_b,m_a,m_b) new1 = n_anew + m_anew new2 = n_bnew if new1 == 0: return '0' elif new1 != 0: return yuefen_print_func(new1,new2) def jianfa_func(n_a,n_b,m_a,m_b): if n_a != 0 and m_a != 0: n_anew,n_bnew,m_anew,m_bnew = gongyuefen_func(n_a,n_b,m_a,m_b) new1 = n_anew - m_anew new2 = n_bnew if new1 == 0: return '0' elif new1 != 0: return yuefen_print_func(new1,new2) def chengfa_func(n_a,n_b,m_a,m_b): if n_a != 0 and m_a != 0: new1 = n_a*m_a new2 = n_b*m_b return yuefen_print_func(new1,new2) def chufa_func(n_a,n_b,m_a,m_b): if n_a > 0 and m_a > 0: new1 = n_a*m_b new2 = n_b*m_a if n_a > 0 and m_a < 0: new1 = -n_a*m_b new2 = -n_b*m_a if n_a < 0 and m_a > 0: new1 = n_a*m_b new2 = n_b*m_a if n_a < 0 and m_a < 0: new1 = -n_a*m_b new2 = -n_b*m_a return yuefen_print_func(new1,new2) if n_a != 0 and m_a != 0: num_n = yuefen_print_func(n_a,n_b) num_m = yuefen_print_func(m_a,m_b) num_jia = jiafa_func(n_a,n_b,m_a,m_b) num_jian = jianfa_func(n_a,n_b,m_a,m_b) num_cheng = chengfa_func(n_a,n_b,m_a,m_b) num_chu = chufa_func(n_a,n_b,m_a,m_b) print('{} + {} = {}'.format(num_n,num_m,num_jia)) print('{} - {} = {}'.format(num_n,num_m,num_jian)) print('{} * {} = {}'.format(num_n,num_m,num_cheng)) print('{} / {} = {}'.format(num_n,num_m,num_chu)) if n_a == 0 and m_a != 0: num_n = 0 num_m = yuefen_print_func(m_a,m_b) print('{} + {} = {}'.format(num_n,num_m,num_m)) print('{} - {} = {}{}{}'.format(num_n,num_m,'(','-'+num_m,')')) print('{} * {} = {}'.format(num_n,num_m,'0')) print('{} / {} = {}'.format(num_n,num_m,'0')) if n_a != 0 and m_a == 0: num_n = yuefen_print_func(n_a,n_b) num_m = 0 print('{} + {} = {}'.format(num_n,num_m,num_n)) print('{} - {} = {}'.format(num_n,num_m,num_n)) print('{} * {} = {}'.format(num_n,num_m,'0')) print('{} / {} = {}'.format(num_n,num_m,'Inf'))
tmp1,tmp2 = input().split() a1,b1 = map(int,tmp1.split('/')) a2,b2 = map(int,tmp2.split('/')) def Simplified(a,b): if a == 1: return a,b else: for i in range(2,a+1): if a%i==0 and b%i==0: a,b = Simplified(a//i,b//i) return a,b def MixedFraction(a,b): output = '' fraction = '' if b < 0: b = - b a = - a if b == 0: return output else: Int = abs(a) // b Mod = abs(a) % b Mod,b = Simplified(Mod,b) if Mod != 0: fraction = str(Mod)+'/'+str(b) if Int != 0 and Mod != 0: output = str(Int) + ' ' + fraction elif Int == 0 and Mod != 0: output = fraction elif Int != 0 and Mod == 0: output = str(Int) else: output = '0' if a < 0 : output = '(-' + output + ')' return output suma,sumb = a1*b2+a2*b1,b1*b2 suba,subb = a1*b2-a2*b1,b1*b2 mula,mulb = a1*a2,b1*b2 diva,divb = a1*b2,b1*a2 print(MixedFraction(a1,b1)+' + '+MixedFraction(a2,b2)+' = '+MixedFraction(suma,sumb)) print(MixedFraction(a1,b1)+' - '+MixedFraction(a2,b2)+' = '+MixedFraction(suba,subb)) print(MixedFraction(a1,b1)+' * '+MixedFraction(a2,b2)+' = '+MixedFraction(mula,mulb)) if divb == 0: print(MixedFraction(a1,b1)+' / '+MixedFraction(a2,b2)+' = Inf') else: print(MixedFraction(a1,b1)+' / '+MixedFraction(a2,b2)+' = '+MixedFraction(diva,divb))
def conven(a,b): #将分母分子转换成标准形式(k a/b) divNum = simplify(abs(a),b) a //= divNum b //= divNum if a == 0: return '0' elif a < 0: a = abs(a) if a < b: return '(-%d/%d)' % (a, b) c,d = divmod(a,b) if d == 0: return '(-%d)' % (c) return '(-%d %d/%d)' % (c, d, b) elif a >= b: c,d = divmod(a,b) if d == 0: return '%d' % (c) return '%d %d/%d'%(c,d,b) else: return '%d/%d' % (a,b) def simplify(a,b): #求最大公因子 while b: a,b = b,a%b return a while True: try: a,b = input().split() a = list(map(int,a.split('/'))) b = list(map(int,b.split('/'))) leftA = conven(a[0],a[1]) leftB = conven(b[0],b[1]) print('%s + %s = %s' % (leftA,leftB,conven(a[0]*b[1]+b[0]*a[1],a[1]*b[1]))) print('%s - %s = %s' % (leftA,leftB,conven(a[0]*b[1]-b[0]*a[1],a[1]*b[1]))) print('%s * %s = %s' % (leftA,leftB,conven(a[0]*b[0],a[1]*b[1]))) if b[0] == 0: print('%s / %s = %s' % (leftA,leftB,'Inf')) else: print('%s / %s = %s' % (leftA,leftB,conven(a[0]*b[1],a[1]*b[0]))) except Exception: break