思路:
任意真分数:
其中:q=b//a r=b%a
#Egypt fraction
#a/b q=b//a r=b%a
#a/b=1/(1+q) + (a-r)/(b*(q+1))
def relative_prime(fract): #change fraction to relatively-prime fracion
for i in range(2,min(fract[0],fract[1])+1):
if fract[0]%i==0 and fract[1]%i==0:
fract[0]//=i
fract[1]//=i
return fract
def Egypt(fract): #output Egypt ftacion
outlist='' #Egypt fraction list
while fract[0]!=1: #numerator is not zero
q=fract[1]//fract[0] #quotient
r=fract[1]%fract[0] #complement
outlist=outlist+'1/'+(str(1+q))+'+'
fract[0]=fract[0]-r
fract[1]=fract[1]*(1+q)
fract=relative_prime(fract) #check if fraction is relatively-prime fraction
outlist=outlist+'1/'+str(fract[1])
return outlist
while 1:
try:
fract=list(map(int,input().strip().split('/')))
print(Egypt(fract))
except:break
京公网安备 11010502036488号