题解 | #将真分数分解为埃及分数#
将真分数分解为埃及分数
https://www.nowcoder.com/practice/e0480b2c6aa24bfba0935ffcca3ccb7b
贴一个C#版本,从java题解改动的
/**
数学家斐波那契提出的一种求解***分数的贪心算法,准确的算法表述应该是这样的:
设某个真分数的分子为a,分母为b;
把c=(b/a+1)作为分解式中第一个***分数的分母;
将a-b%a作为新的a;
将b*c作为新的b;
如果a等于1,则最后一个***分数为1/b,算法结束;
如果a大于1但是a能整除b,则最后一个***分数为1/(b/a),算法结束;
否则重复上面的步骤。
**/
using System;
namespace HJ82{
class Solution{
public static void Main(){
var input = string.Empty;
while((input = Console.ReadLine()) != null){
var res = "";
var arr = input.Split("/");
var pre = "";
long a = Convert.ToInt64(arr[0]);
long b = Convert.ToInt64(arr[1]);
while(true){
long c = b/a+1;
res += "1/";
res += c;
a = a - b % a;
b = b * c;
res += "+";
if (a == 1){
res += "1/";
res += b;
break;
}else if (a > 1 && b % a == 0){
res += "1/";
res += b/a;
break;
}
}
Console.WriteLine(res);
}
}
}
}
查看10道真题和解析