题解 | #密码强度等级#

将真分数分解为埃及分数

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

#根据任何真分数都是大于等于(分母除以分子加一)分之一来递归,使用数组接收递归的时候的减去的数据对应的分母
def dfs(m, n, l):
    m, n = dfs1(m, n)
    if m == 1:
        l.append(n)
    else:
        x = int(n / m) + 1
        m = m * x - n
        n = n * x
        dfs(m, n, l)
        l.append(x)
    return l

# 对传入的两个数据做处理,不能含有公约数
def dfs1(m, n):
    if m == 1:
        return m, n
    else:
        for i in range(2, m + 1):
            if m % i == 0 and n % i == 0:
                return dfs1(int(m / i), int(n / i))
            elif i == m:
                return m, n
while True :
    try:
        l = []
        la = list(map(int, input().split("/")))
        l = dfs(la[0], la[1], l)
        for i in range(0, len(l)):
            l[i] = "1/" + str(l[i])
        print("+".join(l))
    except:
        break


全部评论

相关推荐

06-26 10:08
门头沟学院 C++
北京Golang实习,一个月4700,吃住都不报,公司位置在海淀。请问友友怎么看呢?如果要租房的话有什么建议吗
码农索隆:租房肯定是合租了,剩下的钱,差不多够正常吃饭了,看看能不能学到东西吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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