码迷,mamicode.com
首页 > 其他好文 > 详细

校招真题练习036 寻找丑数(滴滴)

时间:2019-11-24 09:41:51      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:第一个   一个   number   href   注意   lan   range   输入   get   

寻找丑数

题目描述
把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。

输入描述:
整数N

输出描述:
第N个丑数

 1 N = int(input().strip())
 2 if N <= 6:
 3     print(N)
 4 else:
 5     i2,i3,i5 = 0,0,0
 6     dp = [0] * N
 7     dp[0] = 1
 8     for i in range(1,N):
 9         n2 = dp[i2] * 2
10         n3 = dp[i3] * 3
11         n5 = dp[i5] * 5
12         dp[i] = min(min(n2,n3),n5)
13         if dp[i] == n2:
14             i2 += 1
15         if dp[i] == n3:
16             i3 += 1
17         if dp[i] == n5:
18             i5 += 1
19     print(dp[N-1])

剑指Offer第49题,动态规划。(注意:1也是丑数)

校招真题练习036 寻找丑数(滴滴)

标签:第一个   一个   number   href   注意   lan   range   输入   get   

原文地址:https://www.cnblogs.com/asenyang/p/11921259.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!