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
- cho j trong phạm vi i đến length - 1, thực hiện
- 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