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

将真分数分解为埃及分数

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

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
    line = await readline();
    let tokens = line.split("/");
    let a = parseInt(tokens[0]);
    let b = parseInt(tokens[1]);
    let target = a / b;
    let current = 0;
    let i = 2;
    let pkg = [];
    /**
     *  
     * 贪心算法,结果不一样,但是相加也等于给出的数
     *  * 
     * 
     */
    let ll = "";
    function deep(a, b) {
       
        if (b % a == 0) {
            ll += "1/" + (b / a);
            return;
        }
        let q = Math.ceil( b / a) ;//通过倒着除,并将得到的数向上取整,得到最接近a/b的1/q中的q
        ll += "1/" + q + '+';
        //然后处理 a/b - 1/q 得到的差
        let t = q * b; //  a/b - 1/q  这个公式需要的分母 
        let cha = q * a - b; //cha 的值相当于 a/b - 1/q 后的分子
        deep(cha, t);
    }
    deep(a,b)
    console.log(ll);
    



})();

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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