以
的格式输入一个分数
,其中
。不保证分数为最简分数。
以
的格式输出结果,其中,
表示每一个埃及分数的分母。
如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
2/4
1/2
在这个样例中,输出
也是正确的。
8/11
1/2+1/5+1/55+1/110
const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); function gcd(a,b){ if(a % b === 0){ return b; } return gcd(b, a%b); } rl.on('line', function(line){ let [num1, num2] = line.split('/').map(e=>Number(e)); let trade = 0; let maxGcd = 0; const ans = []; while(num1 > 1){ trade = Math.floor(num2/num1) +1; ans.push('1/' + trade); num1 = num1 * trade - num2; num2 = num2 * trade; maxGcd = gcd(num1, num2); if(maxGcd > 1){ num1 = num1 / maxGcd; num2 = num2 / maxGcd; } } ans.push('1/' + num2); console.log(ans.join('+')); });
const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); rl.on('line', function (line) { let z = parseInt(line.split('/')[0]); let m = parseInt(line.split('/')[1]); let arr =[]; fn(z,m,arr); console.log(arr.join('+')) }); function fn (z,m,arr){ if(m % z === 0){ arr.push('1/'+(m/z)); return ; }else { let f = parseInt(m/z)+1; arr.push('1/'+f); z = z*f - m; m = m*f; fn(z,m,arr) } }
/**
* Created by dcp on 2018/7/2.
*/
// 准确的算法表述应该是这样的:
// 设某个真分数的分子为a,分母为b;
// 把c=(b/a+1)作为分解式中第一个***分数的分母;
// 将a-b%a作为新的a;
// 将b*c作为新的b;
// 如果a等于1,则最后一个***分数为1/b,算法结束;
// 如果a大于1但是a能整除b,则最后一个***分数为1/(b/a),算法结束;
// 否则重复上面的步骤。
var readline = require('readline');
rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
var inputs = [];
rl.on('line', function(data) {
inputs=data.split('/');
if(inputs.length===2){
var a=inputs[0];
var b=inputs[1];
console.log(toEgpty(a,b));
inputs.length=0;
}
});
function toEgpty(a,b) {
var arr1=[];
while (a!==1){
if(b%(a-1)==0){
var t=parseInt(b/(a-1))
arr1.push(1);
arr1.push('/');
arr1.push(t);
arr1.push('+');
a=1;
}else {
var c=parseInt(b/a+1);
arr1.push(1);
arr1.push('/');
arr1.push(c);
arr1.push('+');
a=a-b%a;
b=b*c;
if(b%a==0){
b=b/a;
a=1;
}
}
}
arr1.push(a);
arr1.push('/');
arr1.push(b);
return arr1.join('');
}