Python编程之数据结构与算法练习_001

声明:题目出自《剑指Offer》。算法原理请自行找书撸, 不废话。直接上Python版本代码。

题目:求从小到大的顺序的第1500个丑数。我们把只包含因子 2、3 和 5 的数称作丑数(Ugly Number)

1 1 #计算第1500个丑数 2 2 #1,2,3,4,5 3 3 import datetime 4 4 5 5 startTime = datetime.datetime.now() 6 6 7 7 uglyNumberList = [1] 8 8 indexList = [[0,2], [0,3], [0,5]] 9 9 1010 while len(uglyNumberList) <= 1500: 1111 var = min(uglyNumberList[indexList[0][0]]*2, uglyNumberList[indexList[1][0]]*3, uglyNumberList[indexList[2][0]]*5) 1212 for i in range(0, 3): 1313 if uglyNumberList[indexList[i][0]]*indexList[i][1] == var: 1414 indexList[i][0] += 1 1515 else: 1616 uglyNumberList.append(var) 1717 else: 1818 deltaTime = datetime.datetime.now() - startTime 1919 print("The 1500 ugly number is {}\nTime consuming is {} ms".format(uglyNumberList[-1], deltaTime.total_seconds()*1000))
点赞
收藏

评论区

加载中...

相关推荐

python刷题-特殊的数字

问题描述  153是一个非常特殊的数,它等于它的每位数字的立方和,即153111555333。编程求所有满足这种条件的三位十进制数。输出格式  按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。foriinrange(100,1000):astr(i)0bstr(i)1c

python刷题-回文数

问题描述  1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。输出格式  按从小到大的顺序输出满足条件的四位十进制数。foriinrange(1000,10000):astr(i)ifaa::1:print(a)直接输出即可回文数fornin

python-算法训练 区间k大数查询

问题描述给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。输入格式第一行包含一个数n,表示序列长度。第二行包含n个正整数,表示给定的序列。第三个包含一个正整数m,表示询问个数。接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个。序列元素从1开始标号。输出格式总共输出m行,每行一个数

PYTHON练习题 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数。

Python练习标签:PythonPython练习题Python知识点二.使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数,如果大于预设的数,屏幕显示“太大了,请重新输入”如果小于预设的数,屏幕显示“太小了,请重新输入”如此循环,直到猜中,显示“恭喜你,猜中了!共猜

MySQL自动化平台那些事

导读作者:田帅萌(邮箱:tplinux@163.com,欢迎交流)知数堂MySQLDBA班第9期优秀学员,Python运维开发班第5期学员,现任职知数堂助教承接上文《构建MySQL自动化平台思路》(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fmp.w

PAT A1015Reversible Primes(可逆素数)

主要考察了判断一个10进制数是否为素数(isZS(intss))和怎么求一个十进制数的n进制数rec(intn,intm)代码:1include<cstdio2include<algorithm3include<iostream4include<string5

Python编程之数据结构与算法练习_001 - HelloWorld