मान लीजिए कि हमारे पास दो सकारात्मक पूर्णांक x और y हैं, हम कह सकते हैं कि एक पूर्णांक शक्तिशाली है यदि यह x^i + y^j के बराबर है, कुछ पूर्णांक i>=0 और j>=0 के लिए। हमें सभी की एक सूची ढूंढनी है -शक्तिशाली पूर्णांक जिनका मान बाउंड से कम या बराबर होता है।
इसलिए, यदि इनपुट x =2 और y =3 जैसा है और बाउंड 10 है, तो आउटपुट [2,3,4,5,7,9,10] होगा, जैसा कि 2 =2^0 + 3^ 0 3 =2^1 + 3^0 4 =2^0 + 3^1 5 =2^1 + 3^1 7 =2^2 + 3^1 9 =2^3 + 3^0 10 =2^ 0 + 3^2
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- ए, बी को 0 के रूप में प्रारंभ करें
- res:=एक नई सूची
- यदि x 1 के समान है और y 1 के समान है, तो
- यदि बाध्य हो>=2, तो
- रेस के अंत में 2 डालें
- अन्यथा जब x 1 के समान हो, तो
- जबकि y^b + 1 <=बाउंड, करें
- y^b + 1 को रेस में डालें
- b :=b + 1
- जबकि y^b + 1 <=बाउंड, करें
- अन्यथा जब y 1 के समान हो, तो
- जबकि x^a + 1 <=बाउंड, करते हैं
- रेस में x^a + 1 डालें
- a :=a + 1
- जबकि x^a + 1 <=बाउंड, करते हैं
- अन्यथा,
- जबकि x^a + 1<=बाध्य है, करें
- यदि x^a+y^b <=बाध्य है, तो
- b :=b + 1
- अन्यथा,
- a :=a + 1
- b:=0
- यदि x^a+y^b <=बाध्य है, तो
- जबकि x^a + 1<=बाध्य है, करें
- यदि बाध्य हो>=2, तो
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def powerfulIntegers(self, x, y, bound): a,b=0,0 res=[] if x==1 and y==1: if bound>=2: res.append(2) elif x==1: while y**b+1<=bound: res.append(y**b+1) b+=1 elif y==1: while x**a+1<=bound: res.append(x**a+1) a+=1 else: while x**a+1<=bound: if x**a+y**b<=bound: res.append(x**a+y**b) b+=1 else: a+=1 b=0 return list(set(res)) ob = Solution() print(ob.powerfulIntegers(2,3,10))
इनपुट
2,3,10
आउटपुट
[2, 3, 4, 5, 7, 9, 10]