मान लीजिए हमारे पास एक संख्या n है, हमें कोनेल अनुक्रम (Connell sequence) का nवां पद ढूंढना है। कोनेल अनुक्रम इस प्रकार है:
- पहला विषम पूर्णांक लें: 1
- अगले दो सम पूर्णांक लें: 2, 4
- फिर अगले तीन विषम पूर्णांक लें: 5, 7, 9
- उसके बाद अगले चार सम पूर्णांक लें: 10, 12, 14, 16
- इसी तरह चलता रहता है।
यदि इनपुट 12 जैसा है, तो आउटपुट 21 होगा।
इसे हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:
- i := 1
- जब तक (i*(i+1)/2) का भागफल < n+1, करें:
- i := i + 1
- idx := i*(i+1)/2, केवल भागफल लें
- num := i^2
- num - 2*(idx - n - 1) लौटाएं
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण
class Solution:
def solve(self, n):
i = 1
while (i * (i + 1) // 2) < n + 1:
i += 1
idx = i * (i + 1) // 2
num = i**2
return num - 2 * (idx - n - 1)
ob = Solution()
print(ob.solve(12))
इनपुट
12
आउटपुट
21