这个代码无法适用所有情况,可能会出现有重复的埃及分数。分子分母放大10倍式为了使得遍历分子以下的数时更容易找到整除的情况。考虑在a-i>=i的情况下,此时再赋值a=a-i就会发现下次循环的i(从a-i开始递减)已经在上次被遍历过,因为比i大的都不能整除b,使得它不得不再次递减到i,又重复了1/(b/i)这个埃及分数。我的改进方法: while True: try: a,b = map(int,input().split('/')) res = [] while a: for i in range(a,0,-1): if(b % i == 0): if a - i >= i: a *= 10 b *= 10 else: res.append('1' + '/' + str(int(b / i))) a = a - i break print('+'.join(res)) except: break
点赞

相关推荐

点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务