题解 | #参数解析#

将真分数分解为埃及分数

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

代码主要运用公式寻找分解后的分母,公式为C = (分母//分子) + 1。用传入 分子/分母 - 1/c 的结果继续执行寻找新分母过程。这个代码的亮点为增加了判断当前分母是否能被(分子 - 1)整除,如果能整除则小问题的答案就是 1 / 分母 和 1 / (分母/(分子-1))

def fun(a, b):
    if a == 1:  # 当传入的值分子为1时,记录分母b
        l1.append(b)
    elif b % a == 0:  # 当a能被b整除时,记录分母b//a
        l1.append(b // a)
    elif b % (a - 1) == 0:  # 当a-1能被b整除时,记录分母b//(a-1) 和 b
        l1.append(b)
        l1.append(b // (a - 1))
    else:  # 利用公式算出最大子埃及分数、剩余分子、剩余分母。记录埃及分母c, z、m带入函数重新计算
        c = b // a + 1
        m = c * b
        z = a * c - b
        fun(z, m)
        l1.append(c)

while True:
    try:
        l1, l2 = [], []  # l1用来存放找到的分母,来用来辅助计算
        a, b = map(int, input().split('/'))
        fun(a, b)
        l1.sort()
        for i in l1:
            l2.append('1/' + str(i))
        print('+'.join(l2))
    except:
        break
全部评论

相关推荐

牛客279957775号:铁暗恋
点赞 评论 收藏
分享
10-28 11:04
已编辑
美团_后端实习生(实习员工)
一个2人:我说几个点吧,你的实习经历写的让人觉得毫无含金量,你没有挖掘你需求里的 亮点, 让人觉得你不仅打杂还摆烂。然后你的简历太长了🤣你这个实习经历看完,估计没几个人愿意接着看下去, sdk, 索引这种东西单拎出来说太顶真了兄弟,好好优化下简历吧
点赞 评论 收藏
分享
3 1 评论
分享
牛客网
牛客企业服务