真分数分解为埃及分数Python3
真分数分解为埃及分数
- 真分数:分子小于分母
- 埃及分数:分子数为1的真分数
约定分数表示为a/b
** 但是注意,这两个算法给出来的结果并不是所有情况下都是相同! **
Example:
Input: 8/11
Output: 算法1: 1/2+1/5+1/37+1/4070 算法2: 1/2+1/5+1/55+1/110
算法一:基本,穷举
1、初始化i=2,分数为a/b
2、开始比较
- if a=1, finish
- if a/b>1/i: a/b=a/b-1/i, i=i+1, return 2
- if a/b<1/i: i=i+1, return 2
# algorithm 1
def egypt(a,b):if a==1:return [b]i=1B=[]while a!=1:i+=1if a/b > 1/i:a,b = a*i-b, b*iB.append(i)B.append(b)return B
a,b=list(map(int,input().split('/')))
res=egypt(a,b)
res=['1/'+str(i) for i in res]
print('+'.join(res))
算法二:改进
1、初始化变量用来保存各个埃及分数的分母
2、while a!=1
- if b%(a-1)=0: 分母为b//(a-1) and b
- else: 分母为b//a + 1,更新分子分母
if b%a=0, b=b//a, a=1
# Algorithm 2
a,b=list(map(int,input().split('/')))
res=[]
while a!=1:if b%(a-1)==0:res.append(b//(a-1))a=1else:q=b//ares.append(q+1)a = a-b%ab = b*(q+1)if b%a == 0:b = b//aa = 1
res.append(b)
res=['1/'+str(i) for i in res]
print('+'.join(res))
真分数分解为埃及分数Python3相关推荐
- 将真分数分解为埃及分数(斐波那契算法步骤)Java
package com.patience.interview.huawei;import java.util.Scanner;/*** 将真分数分解为埃及分数* @author Green.Gee* ...
- python埃及分数_C语言将真分数分解为埃及分数代码解析
问题描述 现输入一个真分数,请将该分数分解为埃及分数. 问题分析 真分数:分子比分母小的分数,叫做真分数.真分数的分数值小于1.如1/2,3/5,8/9等. 分子是1的分数,叫单位分数.古代埃及人在进 ...
- 华为机试HJ82:将真分数分解为埃及分数
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 分子为1的分数称为埃及分数.现输入一个真分数(分子比分母小的分数,叫做真分数),请将 ...
- 华为OJ平台——将真分数分解为埃及分数
题目描述: 分子为1的分数称为埃及分数.现输入一个真分数(分子比分母小的分数,叫做真分数),请将该分数分解为埃及分数.如:8/11 = 1/2+1/5+1/55+1/110. 输入: 输入一个真分数, ...
- C语言——贪心算法。设计一个算法,把一个真分数表示为埃及分数之和的形式。所谓埃及分数是指分子为1的分数。例如3/5=1/2+1/10
解题思路: 最先想到的是把原数对自己的最大埃及数做减法,直到减完为止. 1. 找最大埃及分数 要找出b/a的最大埃及数(a>b).利用倒数即可推出最大埃及数 a/b = d-k(余数) a=d ...
- 埃及分数怎么计算java_贪心算法之埃及分数问题(附c++源代码)
感谢博主提供算法思路http://blog.csdn.net/tterminator/article/details/50927393 博主的是java代码,在这里写个c++代码,只是牛客网中有些很无 ...
- python埃及分数_趣学Python算法100例
算法源于生活,又可以改变生活.本书专为Python初学者量身打造,内容涵盖Python编程的基础知识和常用算法,是初学算法设计与实现的不错选择. 本书从一些经典算法出发,介绍了100个趣味编程实例.这 ...
- 埃及分数问题c语言,贪心算法之埃及分数问题(附c++源代码)
感谢博主提供算法思路http://blog.csdn.net/tterminator/article/details/50927393 博主的是java代码,在这里写个c++代码,只是牛客网中有些很无 ...
- 真分数转埃及分数的和 (贪心)
分子为1的分数称为埃及分数.现输入一个真分数(分子比分母小的分数,叫做真分数),请将该分数分解为埃及分数. 例如6/7 = 1/2+1/3+1/42 题目分析:设原分数为a/b,b除a得到c,c+1作 ...
- 贪心算法之埃及分数问题
1.问题:给定一个分数,如7/8,我们可以把它表示为1/2 + 1/3 +1/24,埃及分数问题即把一个真分数表示为最少的埃及分数之和的形式,输入一个真分数把其分解为埃及分数之和. 2.设计思路:设分 ...
最新文章
- 官方 | Keras分布式训练教程
- 网络编程试卷选择解析
- WebGL之sprite精灵效果显式数字贴图
- CreateThread 和_beginthreadex区别
- 『Python × C++』函数传参机制学习以及对比
- android handler 的removeMessages的使用
- Linux环境变量PSI指什么,PSI 文件扩展名: 它是什么以及如何打开它?
- opencv运动目标跟踪预测_基于Opencv的运动目标的检测和跟踪.pdf
- leetcode —— 面试题 17.08. 马戏团人塔
- Eclipse中 Clean 的时候总是警告 org.apache.catalina.webresources.Cache backgroundProcess
- atitit.泛型编程总结最佳实践 vO99 java c++ c#.net php
- 在GIS中如何绘制胡焕庸线
- 计算机等级保护 备案,信息安全等级保护备案实施细则
- opencv C++图像/视频旋转 90度 180度 270度
- 解读《Superhuman AI for multiplayer poker》
- 高等代数 具有度量的线性空间(第10章)4 酉空间,酉变换,埃尔米特变换,正规变换
- 对一个注册页面编写测试用例
- springboot的登录拦截器的学习
- 实体店防盗,RFID技术作用巨大
- Rust学习笔记(13)——struct、Option和Box组合应用实现单向链表