题解 | 将真分数分解为埃及分数
将真分数分解为埃及分数
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);
})();
