Computer >> Máy Tính >  >> Lập trình >> Python

Kiểm tra xem tất cả các số phụ có sản phẩm chữ số riêng biệt trong Python hay không

Giả sử chúng ta có một số n, chúng ta phải kiểm tra xem tất cả các số con của số này có tích chữ số duy nhất hay không. Như đã biết, số n chữ số có n * (n + 1) / 2 số con. Ví dụ, các số phụ của 135 là 1, 3, 5, 13, 35, 135. Và tích các chữ số của một số là tích các chữ số của nó.

Vì vậy, nếu đầu vào là n =235, thì đầu ra sẽ là Đúng vì các số con là [2, 3, 5, 23, 35, 235], tích các chữ số là [2, 3, 5, 6, 15, 30 ]

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

Định nghĩa một hàm dig_prod (). Điều này sẽ có chữ số

  • sản phẩm:=1
  • đối với mỗi chữ số d, hãy thực hiện
    • product:=product * d
  • trả lại sản phẩm
  • Từ phương thức chính, hãy làm như sau:
  • num_str:=num dưới dạng chuỗi
  • length:=kích thước của num_str
  • chữ số:=danh sách độ dài kích thước và ban đầu tất cả các giá trị đều rỗng
  • prod_set:=một tập hợp trống mới
  • đối với tôi trong phạm vi từ 0 đến chiều dài, hãy thực hiện
    • chữ số [i]:=num_str [i] dưới dạng số nguyên
  • đối với tôi trong phạm vi 0 đến length - 1, thực hiện
    • cho j trong phạm vi i đến length - 1, thực hiện
      • item:=dig_prod (các chữ số [từ chỉ mục i đến j])
      • nếu mục ở trong prod_set, thì
        • trả về Sai
      • nếu không,
        • chèn mục vào prod_set
  • trả về True

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

def dig_prod(digits):
   product = 1
   for d in digits:
      product *= d
   return product
def solve(num):
   num_str = str(num)
   length = len(num_str)
   digits = [None] * length
   prod_set = set()
   for i in range(0, length):
      digits[i] = int(num_str[i])
   for i in range(0, length):
      for j in range(i, length):
         item = dig_prod(digits[i:j+1])
         if item in prod_set:
            return False
         else:
            prod_set.add(item)
   return True
n = 235
print(solve(n))

Đầu vào

235

Đầu ra

True