题目描述

  分子为1的分数称为埃及分数。现输入一个真分数(分子比分母小的分数,叫做真分数),请将该分数分解为埃及分数。如:8/11 = 1/2+1/5+1/55+1/110。

  • 接口说明

    /*
    功能: 将分数分解为埃及分数序列
    输入参数:
    String pcRealFraction:真分数(格式“8/11”)
    返回值:
    String pcEgpytFraction:分解后的埃及分数序列(格式“1/2+1/5+1/55+1/100”)
    */
    public static String ConvertRealFractToEgpytFract(String pcRealFraction)
    {
    return null;
    }

  • 输入描述:
    输入一个真分数,String型

  • 输出描述:
    输出分解后的string

  • 示例1
    输入
      8/11
    输出
      1/2+1/5+1/55+1/110

实现代码

  • 思路

    ①对于分数a/b,则分解为1/c+m,其中c=b/a+1,(有点类似强行找真分子的味道),然后m=a/b-1/c,
    为了循环m为新的一个a/b,根据纯粹的数学计算得出a=a * c - b , b = c * b;当a循环遍历后为1时,即跳出循环
    ②而对于if (b % (a - 1) == 0) 这种情况,方便快速得出结果,类似3/110,此时b=110,a=3,具体见代码注释

package cn.c_shuang.demo79;import java.util.Scanner;
/*** 将真分数分解为埃及分数* @author Cshuang**/
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);while(in.hasNext()){String s=in.next();egyptAnalyse(s);}in.close();}private static void egyptAnalyse(String s) {String[] parts=s.split("/");int a=Integer.parseInt(parts[0]);//分子int b=Integer.parseInt(parts[1]);//分母StringBuilder sb=new StringBuilder();int c;while (a != 1) {//类似3/110的情况,这里加着方便快速得出结果//虽然没有这个if条件判断,也能得出,但是会慢很多,而且埃及分解结果不唯一,加了该判断结果会更快if (b % (a - 1) == 0) {sb.append("1/").append(b / (a - 1)).append('+');a = 1;} else {c = b / a + 1; //重要点sb.append("1/").append(c).append('+');a = a * c - b;      //  a/b-1/c=(a*c-b)/(b*c),所以分子a = a * c - b;b = c * b;          //  分母b = c * b;  if (b % a == 0) {b = b / a;a = 1;//直接跳出循环}}}sb.append("1/").append(b);System.out.println(sb.toString());}
}

华为OJ——将真分数分解为埃及分数相关推荐

  1. 将真分数分解为埃及分数(斐波那契算法步骤)Java

    package com.patience.interview.huawei;import java.util.Scanner;/*** 将真分数分解为埃及分数* @author Green.Gee* ...

  2. python埃及分数_C语言将真分数分解为埃及分数代码解析

    问题描述 现输入一个真分数,请将该分数分解为埃及分数. 问题分析 真分数:分子比分母小的分数,叫做真分数.真分数的分数值小于1.如1/2,3/5,8/9等. 分子是1的分数,叫单位分数.古代埃及人在进 ...

  3. 华为OJ平台——将真分数分解为埃及分数

    题目描述: 分子为1的分数称为埃及分数.现输入一个真分数(分子比分母小的分数,叫做真分数),请将该分数分解为埃及分数.如:8/11 = 1/2+1/5+1/55+1/110. 输入: 输入一个真分数, ...

  4. 华为机试HJ82:将真分数分解为埃及分数

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 分子为1的分数称为埃及分数.现输入一个真分数(分子比分母小的分数,叫做真分数),请将 ...

  5. C语言——贪心算法。设计一个算法,把一个真分数表示为埃及分数之和的形式。所谓埃及分数是指分子为1的分数。例如3/5=1/2+1/10

    解题思路: 最先想到的是把原数对自己的最大埃及数做减法,直到减完为止. 1. 找最大埃及分数 要找出b/a的最大埃及数(a>b).利用倒数即可推出最大埃及数 a/b = d-k(余数) a=d ...

  6. 埃及分数怎么计算java_贪心算法之埃及分数问题(附c++源代码)

    感谢博主提供算法思路http://blog.csdn.net/tterminator/article/details/50927393 博主的是java代码,在这里写个c++代码,只是牛客网中有些很无 ...

  7. python埃及分数_趣学Python算法100例

    算法源于生活,又可以改变生活.本书专为Python初学者量身打造,内容涵盖Python编程的基础知识和常用算法,是初学算法设计与实现的不错选择. 本书从一些经典算法出发,介绍了100个趣味编程实例.这 ...

  8. 埃及分数问题c语言,贪心算法之埃及分数问题(附c++源代码)

    感谢博主提供算法思路http://blog.csdn.net/tterminator/article/details/50927393 博主的是java代码,在这里写个c++代码,只是牛客网中有些很无 ...

  9. 真分数转埃及分数的和 (贪心)

    分子为1的分数称为埃及分数.现输入一个真分数(分子比分母小的分数,叫做真分数),请将该分数分解为埃及分数. 例如6/7 = 1/2+1/3+1/42 题目分析:设原分数为a/b,b除a得到c,c+1作 ...

  10. 贪心算法之埃及分数问题

    1.问题:给定一个分数,如7/8,我们可以把它表示为1/2 + 1/3 +1/24,埃及分数问题即把一个真分数表示为最少的埃及分数之和的形式,输入一个真分数把其分解为埃及分数之和. 2.设计思路:设分 ...

最新文章

  1. System.getProperty()参数大全
  2. java与众包的联系_众包、众筹和众创是什么 三者区别与联系
  3. [连载]《C#通讯(串口和网络)框架的设计与实现》- 13.中英文版本切换设计
  4. mysql 查询列表是否关注_点赞功能,用mysql还是redis?
  5. 情侣签到365天获1000现金?这款App被关停下架了 网友拍手称快!
  6. 如何c语言读取文件中的内容,急急急!!!如何读取文件中的相关内容
  7. (SWAT-3)SWAT土壤数据库的建立
  8. Mosquitto源码学习
  9. 教育培训机构管理系统软件如何查看优惠券记录?
  10. PySpark 之 连接变换 union、intersection、subtract、cartesian
  11. 七夕表白攻略:教你用自己的专业说情话,成功率100%,我只能帮你们到这里了啊~(程序员系列)
  12. 1913. 公平摄影
  13. 计算机历史博物馆观后感:阿达·洛芙莱斯生平1
  14. 高程、方位角、图幅编号
  15. 通过JAVA自动获取Ip地址
  16. 学生教育云平台登录入口_甘肃省教育云平台
  17. 最新Crack:foxit pdf sdk 8.4.1_win_java
  18. 串口服务器(MOXA)配置
  19. iqooneo3 如何不用vivo账号下载外部应用_【@海林市民】海林人自己的APP上线运行啦,海林融媒APP如何下载安装?安装指南在这里!...
  20. 考研数学二真题1987年-2022年所有历年真题及详解(高清无水印)

热门文章

  1. Fault 异常或陷阱 分析
  2. 力扣刷题 DAY_63 回溯
  3. 目标检测之YOLOv4算法分析
  4. Apache Pegasus 首次 Meetup 圆满落幕
  5. 洞道干燥及计算机控制实验报告,洞道干燥实验思考题
  6. 【基于51单片机驱动ST7789VW的TFT显示屏240x240
  7. CryEngine 渲染流程
  8. Python学习_案例for循环嵌套
  9. vue学习之ElementUI时间选择器报错getTime is not a function
  10. 从键盘输入一系列字符(以回车键结束),并按字母、数字及其它字符分类统计,最后显示这三类的统计结果