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

将真分数分解为埃及分数

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

#解题思路:将真分数(a/b)拆分成a*(1/b),也就是a个1/b,然后我们从大到小依次找出a中能被B整除的数.
比如: 5/8 这个真分数首先我们看,5不能被8整除,但是4可以,那从5中把4分离出来,变成1+4,剩余的1不能拆分,那埃及分数就是1/8+1/2

再比如:7/8这个真分数,首先我们看,7不能被8整除,6不能被8整除,5不能被8整除,4可以整除,分子分离出4,还剩3,我们看3不能整除,2能整除,分离出2,还剩1, 埃及分数:1/8+1/4+1/2
翻译成以下代码:

import sys

for fs in sys.stdin.readlines():
    
    fzfm =fs.strip("\n").split("/")
    fz = int(fzfm[0])
    fm = int(fzfm[1])
    out_string = "" 
    num = fz
    zy = num
    contt = 0
    while True:
        try:
            if fm % zy == 0:
                if contt == 0:
                    out_string += ("1/" + str(fm // zy))
                else:
                    out_string += ("+1/" + str(fm // zy))
                    
                fz = fz - zy
                contt +=1
                zy = fz
                if fz == 0:
                    print(out_string)
                    break
                
            else:
                zy -= 1
                if zy == 0:
                    break
            
        except Exception:
            pass
    

全部评论
只适用分母为合数的情况,质数就不行了
1 回复 分享
发布于 2022-03-10 10:02
分母是质数的话就变成了1+1+1+1
1 回复 分享
发布于 2022-10-21 14:16 浙江
function sol(a:string,res:string[]):string[]{ let [up, down] = a.split('/').map(it => +it); if(up === 0) return res; if(up === 1) { res.push(a); return res } let i:number; for(i = up; i > 1; i--){ if(down % i === 0){ res.push(`1/${down/i}`); return sol(`${up - i}/${down}`, res) } } if(i === 1){ up *= 10; down *= 10; return sol(`${up}/${down}`, res) } } 根据这个思路写了js版本的
点赞 回复 分享
发布于 2023-02-02 15:38 湖北
对于a/b应该先变为x/lcm(a,b),再执行这个算法就可以了
点赞 回复 分享
发布于 2022-08-31 16:46 北京
要求结果递减,2/3,8/11这样就不行了。
点赞 回复 分享
发布于 2022-07-02 10:25
那例子里的8/11怎么解释?
点赞 回复 分享
发布于 2022-03-05 12:45
这样4/31没有可以整除的,答案是1/8+1/248
点赞 回复 分享
发布于 2022-01-29 17:50

相关推荐

一表renzha:手写数字识别就是一个作业而已
点赞 评论 收藏
分享
06-12 17:46
门头沟学院 Java
运营你豪哥:来说重点: ​1.项目前置,时间倒序。​​ 2.​项目描述强化结果与量化效果(STAR原则里的R)。​​ ​3.个人技能精炼,明确掌握程度,突出核心。​​ ​4.增加强有力开头的个人总结部分。​​ 5.​优化教育背景(成绩排名)、合并奖项与活动。​​
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
评论
37
3
分享

创作者周榜

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