题解 | #将真分数分解为埃及分数#

将真分数分解为埃及分数

https://www.nowcoder.com/practice/e0480b2c6aa24bfba0935ffcca3ccb7b

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        String string;
        StringBuffer bu = new StringBuffer();
        char[] chs;
        int i, l, n, a, b, p, r;
        try {
            while ((string = in.readLine()) != null && !string.isEmpty()) {
                i = 0;
                n = 0;
                a = 0;
                b = 0;
                chs = string.toCharArray();
                l = chs.length;
                while (i < l) {
                    if (chs[i] == '/') {
                        a = n;
                        n = 0;
                        i++;
                        continue;
                    }
                    n *= 10;
                    n += chs[i] - '0';
                    if (i == l - 1) b = n;
                    i++;
                }
                while (a != 1 && !(b % a == 0 && 2 * a < b)) {
                    if ((b & 1) != 1 &&
                            a == 3) {//当a=3时,如果分母是偶数,可以直接化简
                        bu.append("1/").append(b / 2).append("+");
                        a = 1;
                        break;
                    }
                    if (b % 3 == 0 &&
                            a == 4) {//当a=4时,如果分母能被3整除数,也可以直接化简
                        bu.append("1/").append(b / 3).append("+");
                        a = 1;
                        break;
                    }
                    p = b / a;
                    r = b % a;
                    bu.append("1/").append(p + 1).append("+");
                    a -= r;//更新a
                    b = b * p + b;//更新b
                }
                if (a != 1) bu.append("1/").append(b / a).append("\n");
                else bu.append("1/").append(b).append("\n");
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        System.out.print(bu);
    }
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务