मान लीजिए कि हमें पूर्णांक संख्याओं की एक श्रेणी दी गई है और हमें श्रेणी में विशेष संख्याएँ ज्ञात करने के लिए कहा गया है। एक विशेष संख्या एक संख्या है जो एक सकारात्मक पूर्णांक है जिसके दशमलव प्रतिनिधित्व में केवल 1 अंक होता है। एक संख्या जिसके दशमलव निरूपण में 1 से अधिक अंक होते हैं, वह भी विशेष हो सकती है यदि संख्या उसके दशमलव निरूपण में अंकों की संख्या से विभाज्य हो और भागफल मान स्वयं एक विशेष संख्या हो। हम दी गई श्रेणी में विशेष संख्याओं की संख्या लौटाते हैं (बाएं_सीमा, दाएं_सीमा)।
इसलिए, अगर इनपुट लेफ्ट_लिमिट =5, राइट_लिमिट =30 जैसा है, तो आउटपुट 13 होगा।
इस श्रेणी में विशेष संख्याएँ हैं:5, 6, 7, 8, 9, 10, 12, 14, 16, 18, 20, 24 और 28।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- यदि right_limit <10, तो
- रिटर्न राइट_लिमिट - लेफ्ट_लिमिट + 1
- len_right:=(right_limit) के स्ट्रिंग प्रतिनिधित्व का आकार
- नंबर_सूची:=[0,1,2,3,4,5,6,7,8,9,10,12,14,16,18]
- जे के लिए 2 से लेकर लेन_राइट + 1 तक, करें
- नंबर_सूची में प्रत्येक k के लिए, करें
- temp1 :=k * j
- यदि temp1 के स्ट्रिंग प्रतिनिधित्व का आकार j के समान है, तो
- नंबर_सूची के अंत में temp1 डालें
- अन्यथा जब लेन(str(temp1))> j, तब
- लूप से बाहर आएं
- अगर संख्या_सूची[नंबर_सूची का आकार - 1]>=सही_सीमा, तो
- लूप से बाहर आएं
- नंबर_सूची में प्रत्येक k के लिए, करें
- नंबर_सूची से डुप्लिकेट मान हटाएं और क्रमबद्ध करें
- गिनती :=0
- नंबर_सूची में प्रत्येक temp2 के लिए, करें
- अगर temp2>=left_limit और temp2 <=right_limit, तो
- गिनती :=गिनती + 1
- अगर temp2>=left_limit और temp2 <=right_limit, तो
- वापसी की संख्या
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def strange(left_limit, right_limit): if right_limit < 10: return right_limit - left_limit + 1 len_right = len(str(right_limit)) number_list = [0,1,2,3,4,5,6,7,8,9,10,12,14,16,18] for j in range(2, len_right + 1): for k in number_list: temp1 = k*j if len(str(temp1)) == j: number_list.append(temp1) elif len(str(temp1)) > j: break if number_list[len(number_list)-1] >= right_limit: break number_list = list(set(number_list)) count = 0 for temp2 in number_list: if temp2 >= left_limit and temp2 <= right_limit: count = count + 1 return count print(strange(5, 30))
इनपुट
5, 30
आउटपुट
13