मान लीजिए कि हमारे पास एक दिया गया पूर्णांक 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
. लगेगा -
रेस :=(एन *(एन + 1) *(2 * एन + 1)) / 6पी>
-
रिटर्न रेस
-
मुख्य विधि से, निम्न कार्य करें -
-
कम :=1
-
उच्च:=100000
-
एन:=0
-
जबकि निम्न −=उच्च, करें
-
मध्य:=(उच्च + निम्न)/2
-
अगर sum_of_squares(मध्य) −=X, तो
-
एन:=मध्य
-
कम :=मध्य + 1
-
-
अन्यथा,
-
उच्च :=मध्य - 1
-
-
-
वापसी एन
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
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