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

将真分数分解为埃及分数

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

用递归,每次求刚好比分数n小的分子是1的分数res就行。每次递归将求的res保存,n减去res,继续递归。非常容易理解。

n, res = list(map(int,input().split('/'))), []

def dfs(num):
    num = [1, num[1] // num[0]] if num[1] % num[0] == 0 else num  # 如果可以约分,则约分
    if num[0] == 1:  # 分子已经是1
        return res.append(num[1])
    i = (num[1] // num[0]) + 1  # 临近num的最大的分数的分母
    res.append(i)
    return dfs([num[0]*i - num[1], num[1]*i][::])  # num做减法后,寻找下一个num的结果

dfs(n[::])
print('+'.join([f'1/{i}' for i in res]))

全部评论

相关推荐

迷茫的大四🐶:自信一点,我认为你可以拿到50k,低于50k完全配不上你的能力,兄弟,不要被他们骗了,你可以的
点赞 评论 收藏
分享
05-25 10:45
门头沟学院 Java
Frank_zhang:没实习一个项目肯定不够,可以再做一个轮子,技术栈再补一个mq,微服务,整体再换个简历模板,暑期尽量再找一个日常实习
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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