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