每次取最大的埃及分数减掉就行了,主要是要约个分不然数值膨胀太快
a, b = map(int, input().split("/"))
def m(au, ad, bu, bd):
if ad != bd:
au *= bd
bu *= ad
ad *= bd
au -= bu
# 简单约分
while au % 2 == 0 and ad % 2 == 0:
au /= 2
ad /= 2
while au % 3 == 0 and ad % 3 == 0:
au /= 3
ad /= 3
return au, ad
result = []
while a:
r = b % a
if r == 0:
min_mom = b // a
else:
min_mom = b // a + 1
a, b = m(a, b, 1, min_mom)
result.append(min_mom)
print("+".join(map(lambda x: f"1/{int(x)}", result)))



京公网安备 11010502036488号