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

将真分数分解为埃及分数

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

/*【贪心算法】
设a、b为互质正整数,a < b 分数a/b 可用以下的步骤分解成若干个单位分数之和:

步骤一: 用b 除以a,得商数q 及余数r。(r=b - a*q)
步骤二:把a/b 记作:a/b=1/(q+1)+(a-r)/b(q+1)
步骤三:重复步骤2,直到分解完毕
按照上面的方法:
3/7=1/3+2/21=1/3+1/11+1/231
13/23=1/2+3/46=1/2+1/16+1/368
————————————————        
原文链接:https://blog.csdn.net/xx__Mor/article/details/104313018
*/
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    // Write your code here
    const lines = []
    while(line = await readline()){
       lines.push(line)
    }
    for(let val of lines) {
        const [a,b] = val.split('/')
        console.log(fn(+a,+b))
    }
    function fn(a,b) {
        let c = Math.floor(b/a) + 1
        let r = b % a
        let res = ''
        if (r == 0 ) {
            return res + `1/${b/a}`
        }
        if (a-r == 1) {
            res += `1/${c}+1/${b*c}`
            return res 
        } else {
            return res + `1/${c}+` + fn(a-r, b * c)
        }
    }
}()

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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