263. Ugly Number
class Solution:
def isUgly(self, num):
"""
:type num: int
:rtype: bool
"""
if num<=0:
return False
while num%2==0:
num//=2
while num%3==0:
num//=3
while num%5==0:
num//=5
return True if num==1 else False
264. Ugly Number II
class Solution:
def nthUglyNumber(self, n):
"""
:type n: int
:rtype: int
"""
if n<0:
return 0
dp=[1]*n
i1=i2=i3=0
for i in range(1,n):
dp[i]=min(2*dp[i1],3*dp[i2],5*dp[i3])
if dp[i]==2*dp[i1]: i1+=1
if dp[i]==3*dp[i2]: i2+=1
if dp[i]==5*dp[i3]: i3+=1
return dp[n-1]
313. Super Ugly Number
class Solution:
def nthSuperUglyNumber(self, n, primes):
"""
:type n: int
:type primes: List[int]
:rtype: int
"""
__=len(primes)
___=[1]*n
____=[0]*__
for i in range(1,n):
___[i]=min([___[____[_]]*primes[_] for _ in range(__)])
for _ in range(__):
if ___[i]==___[____[_]]*primes[_]: ____[_]+=1
return ___[-1]