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

将真分数分解为埃及分数

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

while True:
    try:
        a,b = map(int,input().split('/'))
        a = a * 10
        b = b * 10
        res = []
        while a:
            for i in range(a,0,-1):
                if(b % i == 0):
                    res.append('1' + '/' + str(int(b / i)))
                    a = a - i
                    break
        print('+'.join(res))
    except:
        break


华为机试题解(prod.by kedao) 文章被收录于专栏

华为实习机试题解

全部评论
这段代码居然真能通过!!! 所以我把此代码继续优化了一下!嘻嘻 while True: try: a,b = map(int,input().split('/')) res = [] for i in range(a): res.append('1' + '/' + str(b)) print('+'.join(res)) except: break
1 回复 分享
发布于 2022-07-04 11:28
求问一下这个算法的原理是什么呀,非常感谢!
3 回复 分享
发布于 2022-03-22 17:25
没看懂为什么是a*10,b*10呢
2 回复 分享
发布于 2022-08-12 16:39
a = a * 10,b = b * 10 本题有多个解,*10为了和题目参考答案输出一致 乘以几都无所谓,是为了增加分母可约分的因数
2 回复 分享
发布于 2023-03-29 16:20 浙江
将1/2 + 1/5 + 1/55 + 1/110通分计算一下,整个原理是这个过程的逆过程
1 回复 分享
发布于 2022-04-04 17:33
代码需要优化一下 不然4/43会成为4个1/43 我的优化方案:a*=10 b*=10改为 while True: if a*n>=b: a*=n b*=n break else: n*=10 手机打的 没对齐
1 回复 分享
发布于 2022-12-28 10:49 山东
这不是卡bug吗,咋能知道一开始用10*b作为分母啊
1 回复 分享
发布于 2023-08-30 16:42 北京
666啊
点赞 回复 分享
发布于 2022-04-17 22:45
这个代码思路太牛掰了
点赞 回复 分享
发布于 2022-07-26 10:47
太厉害了,大佬
点赞 回复 分享
发布于 2022-08-23 11:27 广东
不太理解这是啥原理去,求大佬解释
点赞 回复 分享
发布于 2022-08-26 22:02 广东
直接报错了,调试有bug
点赞 回复 分享
发布于 2022-09-22 10:59 四川
*10应该是区分粒度 相当于最多考虑到1/b*10的精确度,或者是多项式最多有10项
点赞 回复 分享
发布于 2022-10-01 15:50 山东
11/101 1/10+1/202+1/505+1/505
点赞 回复 分享
发布于 2022-11-08 11:10 安徽
盲猜:*10因该是题目例子读出来的吧。 8/11=1/2+1/5+1/55+1/110
点赞 回复 分享
发布于 2022-12-24 17:07 重庆
while True: try: m, n = map(int,input().split("/")) res = [] for i in range(m): res.append('1' + '/' + str(n)) print("+".join(res)) except: break
点赞 回复 分享
发布于 2023-06-23 15:57 四川

相关推荐

vip牛牛:测试吧,开发现在至少212
点赞 评论 收藏
分享
评论
48
18
分享

创作者周榜

更多
牛客网
牛客企业服务