मान लीजिए हमारे पास एक दिया गया पूर्णांक X है, हमें अधिकतम मान N ढूंढना है ताकि पहले N प्राकृतिक संख्याओं का योग मान X से अधिक न हो।
तो, यदि इनपुट X = 7 की तरह है, तो आउटपुट 2 होगा क्योंकि 2, N का अधिकतम संभव मान है, N = 3 के लिए, श्रृंखला का योग X = 7 से अधिक हो जाएगा। तो, 1^2 + 2^2 + 3^2 = 1 + 4 + 9 = 14।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
एक फ़ंक्शन sum_of_squares() परिभाषित करें। यह N लेगा
res := (N * (N + 1) * (2 * N + 1)) / 6
res वापस करें
मुख्य विधि से, निम्नलिखित करें -
low := 1
high := 100000
N := 0
जब low <= high, करें
mid := (high + low) / 2
यदि sum_of_squares(mid) <= X, तो
N := mid
low := mid + 1
अन्यथा,
high := mid - 1
N वापस करें
उदाहरण
बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def sum_of_squares(N): res = (N * (N + 1) * (2 * N + 1)) // 6 return res def get_max(X): low, high = 1, 100000 N = 0 while low <= high: mid = (high + low) // 2 if sum_of_squares(mid) <= X: N = mid low = mid + 1 else: high = mid - 1 return N X = 7 print(get_max(X))
इनपुट
7
आउटपुट
2