题解 | #将真分数分解为埃及分数#

将真分数分解为埃及分数

https://www.nowcoder.com/practice/e0480b2c6aa24bfba0935ffcca3ccb7b

import itertools

while True:
    try: 
        a, b = map(int, input().split('/'))
        v = 0
        nums = []

        for n in itertools.count(start=2):
            if a/b > v+1/n:
                v += 1/n
                nums.append(f'1/{n}')
            elif a/b == v+1/n:
                nums.append(f'1/{n}')
                break

        print('+'.join(nums))

    except: 
        break


# 1. if a/b == v + 1/n, break and output result
# 2. if a/b > v + 1/n, append k to num
# 3. if a/b < v+1/n, keep looping but skip n, i.e. dont append current n to num.

一种贪心算法的思路,每次都加入求和后不超过真分数的最大埃及分数,然而超时了

全部评论

相关推荐

牛客83265014...:完了,连现在都没开始面,13号投的是不是晚了
秋招的第一个offer,...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务