2023年8月23日 星期三

8/23 每日一題(檢查數字是否可以被自身整除ex:12可被1和2整除, 但不可包含0)

 A self-dividing number is a number that is divisible by every digit it contains.

  • For example, 128 is a self-dividing number because 128 % 1 == 0128 % 2 == 0, and 128 % 8 == 0.

self-dividing number is not allowed to contain the digit zero.

Given two integers left and right, return a list of all the self-dividing numbers in the range [left, right].

 

Example 1:

Input: left = 1, right = 22
Output: [1,2,3,4,5,6,7,8,9,11,12,15,22]

Example 2:

Input: left = 47, right = 85
Output: [48,55,66,77]

 

Constraints:

  • 1 <= left <= right <= 104

class Solution:
    def selfDividingNumbers(self, left: int, right: int) -> List[int]:
        res=[]
       
        for i in range(left,right+1):
            n=0
            if i % 10 ==0:
                continue#下一圈
            if i < 13:
                res.append(i)
            else:
                long=len(str(i))
                while n < long:
                    if int(str(i)[n])==0 or i % int(str(i)[n])!=0:
                        break #不可整除 跳出
                   
                    n+=1
                if n == long: #正常檢查完每一項
                    res.append(i)
        return res
                #成功執行完表示為自整除數字
-----------------------------------參考答案

class Solution:
    def selfDividingNumbers(self, left: int, right: int) -> List[int]:
        res=[]
        for i in range(left, right+1):
            n=i
            b=True
            while(n):
                dig=n%10
                if not dig or i%dig:  #如果dig=0 或是i%dig不整除 b=False結束迴圈
                    b=False
                    break
                n=n//10
            if b:
                res.append(i)
        return res

----------------------
class Solution:
    def selfDividingNumbers(self, left: int, right: int) -> List[int]:
        output = []

        for i in range(left, right + 1):
            if self.check(i):
                output.append(i)
        return output
    
    def check(self, n):
        temp = n
        while temp:
            r = temp % 10
            if r == 0:
                return False
            if n % r != 0:
                return False
            temp = temp // 10
        
        return True

標籤:

0 個意見:

張貼留言

訂閱 張貼留言 [Atom]

<< 首頁