描述 | |
---|---|
知识点 | 字符串 |
运行时间限制 | 10M |
内存限制 | 128 |
输入 | 输入一个真分数,String型 |
输出 | 输出分解后的string |
样例输入 | 8/11 |
样例输出 | 1/2+1/5+1/55+1/110 |
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String input = scanner.next();
scanner.close();
convert2(input);
}
private static void convert2(String real) {
String[] parts = real.split("/");
int a = Integer.parseInt(parts[0]); // 分子
int b = Integer.parseInt(parts[1]); // 分母
int c;
while (true) {
if (b % a != 0) /* 若分子不能整除分母 */
c = b / a + 1; /* 则分解出一个分母为b/a+1的埃及分数 */
else {
c = b / a;
a = 1;
} /* 否则,输出化简后的真分数(埃及分数) */
if (a == 1) {
System.out.printf("1/" + c);
break; // a为1标志结束 */
} else
System.out.printf("1/" + c + "+");
a = a * c - b; /* 求出余数的分子 */
b = b * c; /* 求出余数的分母 */
if (a == 3) /* 若余数为3,输出最后两个埃及分数 */
{
System.out.printf("1/" + b / 2 + "+" + "1/" + b);
break;
}
}
}
}