import java.util.Scanner; public class Main { private static StringBuilder result = new StringBuilder(); public static void main(String[] args){ Scanner in = new Scanner(System.in); while(in.hasNext()){ String[] fraction = in.nextLine().trim().split("/"); // 分子 Integer a = Integer.parseInt(fraction[0]); // 分母 Integer b = Integer.parseInt(fraction[1]); result = new StringBuilder(); solution(a, b); } } /** * 递归 * @param a * @param b */ private static void solution(Integer a, Integer b){ egypt(a, b); System.out.println(result); } /** * 数学法: 真分数 -> 埃及分数 * * 算法: * 设某个真分数的分子为a, 分母为b; * 把c=(b/a+1)作为分解式中第一个埃及分数的分母; * 将a-b%a 或 a*c-b作为新的a; * 将b*c作为新的b; * * 如果a=1, 则最后一个埃及分数为1/b, 算法结束; * 如果a>1 && b%a=0, 则最后一个埃及分数为1/(b/a), 算法结束; * 否则重复上面的步骤. * * 优化: 当b%(a-1)=0时, a/b=1/(b/(a−1))+1/b, 则最后两个埃及分数为1/(b/(a-1))和1/b, 算法结束; * * @param a 分子 * @param b 分母 */ private static void egypt(Integer a, Integer b){ // a=1 则最后一个埃及分数为1/b if(a == 1){ result.append("1/"+b); return; } // a>1 && b%a=0 则最后一个埃及分数为1/(b/a) if(b%a == 0){ result.append("1/"+b/a); return; } // b%(a-1)=0 则最后两个埃及分数为1/(b/(a-1))和1/b if(b%(a-1) == 0){ result.append("1/"+b/(a-1)+"+1/"+b); return; } // 埃及分数的分母 int c = b/a+1; result.append("1/"+c+"+"); egypt(a-b%a, b*c); // egypt(a*c-b, b*c); } }