मान लीजिए कि हमारे पास एक संख्या n है, हमें यह जांचना है कि इस संख्या के सभी उप-संख्याओं में अद्वितीय अंकों का गुणनफल है या नहीं। जैसा कि हम जानते हैं, n अंकों की संख्या में n*(n+1)/2 उप-संख्याएँ होती हैं। उदाहरण के लिए, 135 की उप-संख्याएं 1, 3, 5, 13, 35, 135 हैं। और किसी संख्या का अंक गुणन उसके अंकों का गुणनफल होता है।
इसलिए, यदि इनपुट n =235 की तरह है, तो आउटपुट सही होगा क्योंकि उप संख्याएं [2, 3, 5, 23, 35, 235] हैं, अंक उत्पाद हैं [2, 3, 5, 6, 15, 30 ]
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
डिग_प्रोड () फ़ंक्शन को परिभाषित करें। इसमें अंक लगेंगे
- उत्पाद:=1
- अंकों में प्रत्येक d के लिए, करें
- उत्पाद:=उत्पाद * घ
- उत्पाद लौटाएं
- मुख्य विधि से निम्न कार्य करें:
- num_str :=num as string
- लंबाई:=num_str का आकार
- अंक:=आकार की लंबाई की एक सूची, और शुरू में सभी मान शून्य हैं
- prod_set :=एक नया खाली सेट
- 0 से लंबाई के बीच के लिए, करें
- अंक[i] :=num_str[i] पूर्णांक के रूप में
- मैं के लिए 0 से लंबाई -1 की सीमा में, करो
- जे के लिए i से लंबाई -1 तक की श्रेणी में, करें
- आइटम:=dig_prod(अंक [इंडेक्स i से j तक])
- अगर आइटम prod_set में है, तो
- झूठी वापसी
- अन्यथा,
- प्रोड_सेट में आइटम डालें
- जे के लिए i से लंबाई -1 तक की श्रेणी में, करें
- सही लौटें
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
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))
इनपुट
235
आउटपुट
True