题解 | #参数解析#

将真分数分解为埃及分数

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
全部评论

相关推荐

昨天 15:12
门头沟学院 Java
别人在上班,我就在工位上看看视频啥的,这正常吗?
程序员小白条:实习就是摸鱼,只是公司指标,把你进来了,可能那时候客户很多,但等你进来的时候,已经是淡季了,根本没多少需求,或者说根本不适合实习生去完成,因此你就每天干坐着就行,可能1,2个月都没需求
实习生的蛐蛐区
点赞 评论 收藏
分享
Yki_:你要算时间成本呀,研究生两三年,博士三四年,加起来就五六年了,如果你本科去腾讯干五年,多领五年的年薪,加上公司内涨薪,可能到时候十五年总薪资也跟博士差不多
点赞 评论 收藏
分享
评论
3
1
分享

创作者周榜

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