题目
编写函数,实现分数加减运算并输出结果,注意结果要化为最简分数。不考虑不合理的输入等特殊情况,比如分母不能为0。
格式
输入格式
输入形式A/B+C/D或者A/B-C/D,其中ABCD为整型。
输出格式
输出形式X/Y,或-X/Y,其中XY为正整数。如果结果为0,则直接输出0。
样例1
输入:
1/8+1/4
输出:
3/8
程序
def gcd(a,b):
if a<b:
a,b = b,a
while(b!=0):
tmp =a
a = b
# 求余数,循环次数更少
# 作差,循环次数太多,超市
b = tmp%b
return a
def yueshu(a,b):
return int(a*b/gcd(a,b))
def main():
#code here
stra = input()
if "+" in stra:
a,b =stra.split("+")
a1,a2 =map(int,a.split("/"))
b1,b2 =map(int,b.split("/"))
c2 =yueshu(a2,b2)
ca1 =int(a1*c2/a2)
ca2 =int(b1*c2/b2)
c1 = ca1+ca2
if c1!=0:
tmp=gcd(c1,c2)
print("%d/%d"%(int(c1/tmp),int(c2/tmp)))
else:
print("0")
else:
a,b = stra.split("-")
a1,a2 =map(int,a.split("/"))
b1,b2 =map(int,b.split("/"))
c2 =yueshu(a2,b2)
ca1 =int(a1*c2/a2)
ca2 =int(b1*c2/b2)
c1 = ca1-ca2
if c1!=0:
tmp=gcd(c1,c2)
if tmp>0:
print("%d/%d"%(int(c1/tmp),int(c2/tmp)))
else:
print("%d/%d"%(int(-1*c1/tmp),int(-1*c2/tmp)))
else:
print("0")
pass
if __name__ == '__main__':
main();

被折叠的 条评论
为什么被折叠?



