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

将真分数分解为埃及分数

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

贪心

这题一开始,我是在找组成这个真分数的埃及分数的规律,其实完全没必要,因为不管什么样的真分数,它都是可以用埃及分数组成的。并且结果可能有多个。这两个关键信息一定要get到

1、任何的真分数,都可以用多个埃及分数进行分解
2、结果可能有多个

所以可以把大问题化成小问题,大的真分数化成小的真分数。

例题目中的 8/11,我先用一个埃及分数去把它化小点,再用一个埃及分数把它化小点,到最后,一定可以化成一个埃及分数。这些都基于上面中的两点推算出来的。因为如果不行,那么肯定存在一个真分数不能用埃及分数进行分解,也就否定了第一条,那么题目中肯定会说如果分解不了给XXX结果。

所以解法就是:
步骤一:8/11, 它比1/2大, 1/3小。 所以用1/2去分解 (减去1/2),得到 5/22
步骤二:5/22, 它比1/5大, 1/4小。 所以用1/5去分解 (减去1/5),得到 3/110
步骤三:3/110,它比1/37大,1/38小。所以用1/37去分解(减去1/37),得到 1/4070
结果是:8/11 = 1/2 + 1/5 + 1/37 + 1/4070

因为用的是贪心,每次选择一个最大的埃及分数去分解,其实在步骤3也可以用 1/55去分解。答案有多个,题目要求任意一个即可。

所以,整个题目的难点就在于知道一个比当前真分数小的埃及分数,然后用这个埃及分数去减,一步一步循环上述步骤就可以了

 Scanner in = new Scanner(System.in);
        while (in.hasNextLine()){
            String[] split = in.nextLine().split("/");
            long a = Long.parseLong(split[0]);
            long b = Long.parseLong(split[1]);
            StringBuilder res = new StringBuilder(); //存结果的

            while (true){
                //先找到一个能减去的最大埃及分数的分母 ,结果是 1/ c
                long c =  b / a + 1;
                // a/b减去 1/c 之后的分子分母如下
                a = a * c - b;
                b = b * c;

                res.append(1).append('/').append(c).append('+');

                if (a == 1 || b % a == 0){
                    res.append(1).append('/').append(b/a);
                    break;
                }
            }
            System.out.println(res.toString());

全部评论

相关推荐

点赞 评论 收藏
分享
04-02 16:49
门头沟学院 Java
_bloodstream_:我也面了科大讯飞,主管面的时候听说急招人优先考虑能尽快实习的,我说忙毕设,后面就一直没消息了
点赞 评论 收藏
分享
头像
今天 12:47
已编辑
中国地质大学(武汉) Java
你出生在农村,与其它农村小孩子无异小学时你对成绩没有概念,只感觉上课不听课也是无聊,只知道不写完作业会被老师罚站一到考试,自己成绩总是名列靠前,即使偶尔落后,你也从不在意中学时你觉得课本的东西很简单,随便学学就会了,并没有大量刷题你总是想不通,那些所谓的数学物理中难题,明明是在送分,为什么你的同学总是想不出解题方法高中时这三年你过的不容易,晚睡早起,给了自己很多压力.但是你也发现自己是有些小聪明的,你感觉班里有些同学很刻苦,但成绩比你差远了。那些数学题和物理题的陷阱,同学一遍遍踩坑,但是你总能发现并避开它们.“为了父母的期盼,为了恩师的厚望,为了天赐的智慧,为了青春的理想......”“天行健...
创作助手_刘北:其实,这种已经是神童级别的了,不费吹灰之力就能拿到自己想要的东西,就像机器按照程序走了一遍,就像我小时候看爱情公寓,觉得他们都很惨,几个人只能挤在一个房间里合租,但是好在他们有一群非常好的朋友,随着时间的推移,慢慢长大了,在看爱情公寓的时候,觉得他们都很厉害,博士、留学生、***、电台公子,数学天才,任何一个都是我可望而不可即的,更别说可以在异地认识一群更好的朋友了,所以呢,人还是要自给自足,满足当下,不要攀比,意气风发的且有理想的18岁少年永远都存在,只不过随着时间的推移他被你包裹在了洋葱的最深处。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务