贪心法:输入一个真分数,编写程序输出其表示为埃及分数之和的形式。如7/8=1/2+1/3+1/24,15/16=1/2+1/3+1/10+1/240,分母和分子分别由键盘分两次输入。

帮同学写实验报告,这是众多题目里面比较中意的一题,也是花时间比较多的一题。

解题思路

设原数值为f,f减去比该数值小一点或相等的最大的埃及分数1/c(<=f),其结果作为新的f=f-1/c,直到f=0。如何找到这个埃及分数呢?其实很简单,c=⌈1/f⌉(⌈⌉表示上取整)。

核心函数

解释:round()函数是用来砍掉误差项的,ceil()函数是上取整函数。因为运算过程中会产生形如4.000000000004这样的数,如果不先砍掉误差项的话,ceil(4.000000000004)得到的结果是5,这显然是错的。

代码

import math
a=int(input('分子:'))
b=int(input('分母:'))
f=a/b
s='%d/%d='%(a,b)
while f > 1e-8:c=math.ceil(round(1/f,8))s+='1/%d+'%(c)f=f-1/c
s=s[:-1]
print(s)

代码原图,我平时是用Jupyter Notebook/python 3.0的,因为老师教学用这个。

写在最后

读者觉得代码有什么漏洞欢迎指出。我这里是取8位精度,你们可以试着修改完善。不敢说我的代码100%完美,但绝对兼顾了简洁+效用。

在开始之前我也参考过网络上的解法,不过很少看到有用python做的,即使有也做得挺复杂,特别是用c语言做的,哇真的是觉得太长了,看不进去,对一个用惯python的人,简直受不了。于是我就自己捣鼓,并且花了很多时间去完善,想法、思路、代码都是自己想的,如有雷同纯属巧合。

也正因花了不少精力,不忍心仅仅为了帮别人完成一次作业,所以决定发表出来。第一次写博客,排版什么的都很简陋,喜欢大家多多包涵、多多支持。

@Tin立志当程序猿

Python 贪心法:真分数表示为埃及分数之和相关推荐

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

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

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

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

  3. 贪心:将真分数用埃及分数之和表示

    任务描述 本关任务:设计一个算法,把一个真分数 F 表示为埃及分数之和的形式. 编程要求 请在右侧编辑器Begin-End处补充代码,完成本关任务,注意需要学生自己获取真分数再进行编程. 测试说明 平 ...

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

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

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

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

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

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

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

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

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

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

  9. 计算机是怎么计算埃及分数,埃及分数问题(贪心算法)

    一.问题描述 把一个真分数表示成最少的埃及分数之和. 埃及分数即分子为1的分数.例如    7/8=1/2+1/3+1/24; 1.判断这个分数是不是埃及分数 2.形成1/2 1/3 1/4 --.. ...

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

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

最新文章

  1. JavaScript如何声明对象、函数以及对象中的函数(即方法)
  2. python语言开发的软件有哪些-最适合人工智能开发的5种编程语言,你知道几种?...
  3. [摘抄] Bezier曲线、B样条和NURBS
  4. Redis 实用技术——Pipeline
  5. Unity动态对象优化
  6. java中处理异常怎么越过,java – Spring Batch – 异常不可跳过
  7. XShell——使用
  8. .Net 程序员应该知道的工具和网站
  9. flume学习(四):Flume Channel Selectors使用
  10. Hibernate与mybatis比较
  11. 常见排序算法之快速排序
  12. 由粒子加速器产生的反中子形成的白洞
  13. 对比学习(Contrastive Learning) (1)
  14. SolidWorks工程图比例 1:1 配置
  15. 美国公布最易破解密码 专家称中国网民大量使用
  16. 【pyecharts库与pandas库】利用pyecharts库根据表格中的GDP数据绘制2021年中国各省GDP热力图和GDP较低的五个省的人均GDP与人口的柱状图
  17. 电商经验!补单防止骗子退款技巧
  18. Pygame实战之外星人入侵NO.12——点击按钮开始游戏
  19. SOLIDWORKS怎样做填充阵列
  20. Altium Designer 20 安装方法及步骤

热门文章

  1. kubernetes 部署
  2. 统计分析用户信息量的工具Flurry的使用
  3. 读良葛格初心者之路有感
  4. [网络规划] 拓扑图绘图工具yED Graph Editor使用(持续更新)
  5. 电脑无法获取服务器信息,电脑无法获取IP地址怎么办?原来只需四招就搞定
  6. 2019_IJCAI_Adapting BERT for Target-Oriented Multimodal Sentiment Classification
  7. echart实现地球外环绕卫星效果
  8. PDF文件怎么打印?分享两种打印方法
  9. 群晖NAS中对Gitlab配置邮箱发送消息_以163邮箱为例
  10. linux练习题十七