本文共 1292 字,大约阅读时间需要 4 分钟。
为了解决这个问题,我们需要计算N个有理数的和,并将结果以最简形式输出。最简形式包括整数部分和分数部分,分数部分必须是小于分母且没有公因子的分数。
import mathn = int(input())fractions = input().split()total_numerator = 0total_denominator = 1for frac in fractions: a_str, b_str = frac.split('/') a = int(a_str) b = int(b_str) # 确保分母为正数 if b < 0: a = -a b = -b # 计算新的分子和分母 new_numerator = total_numerator * b + a * total_denominator new_denominator = total_denominator * b # 计算gcd g = math.gcd(abs(new_numerator), abs(new_denominator)) total_numerator = new_numerator // g total_denominator = new_denominator // g# 处理整数部分和分数部分integer_part = total_numerator // total_denominatorremainder = total_numerator % total_denominatorif remainder == 0: print(integer_part)else: if integer_part == 0: print(f"{remainder}/{total_denominator}") else: print(f"{integer_part} {remainder}/{total_denominator}")
input()
读取N和分数字符串。这个方法确保了在处理大数时不会溢出,并且每次相加后都保持分数的最简形式,从而保证了结果的准确性。
转载地址:http://tswzz.baihongyu.com/