मान लीजिए हमारे पास एक पॉजिटिव संख्या n है, और सटीकता p। हमें बाइनरी सर्च तकनीक का उपयोग करके संख्या n का वर्गमूल p दशमलव स्थानों तक ढूंढना है। तो यदि संख्या n = 50 है, और p = 3, तो आउटपुट 7.071 है।
इसे हल करने के लिए, हमें कुछ चरणों का पालन करना होगा -
- start := 0 और end := n प्रारंभ करें
- मिड पूर्णांक के वर्ग की तुलना करें, यदि यह संख्या के बराबर है तो पूर्णांक भाग मिल गया है, अन्यथा आवश्यकतानुसार बाएं या दाएं देखें।
- एक बार जब हम पूर्णांक भाग के लिए कार्य पूरा कर लेते हैं, फिर भिन्नात्मक भाग के लिए करें।
- इन्क्रीमेंट वेरिएबल को 0.1 के रूप में प्रारंभ करें, फिर भिन्नात्मक भाग को p स्थानों तक गणना करें। प्रत्येक इटरेशन के लिए इन्क्रीमेंट अपने पिछले मान का 1/10वां हिस्सा बन जाता है।
- अंत में उत्तर वापस करें।
उदाहरण
#includeusing namespace std; float sqrtBinarySearch(int num, int p) { int left = 0, right = num; int mid; float res; while (left <= right) { mid = (left + right) / 2; if (mid * mid == num) { res = mid; break; } if (mid * mid < num) { left = mid + 1; res = mid; } else { right = mid - 1; } } float incr = 0.1; for (int i = 0; i < p; i++) { while (res * res <= num) { res += incr; } res -= incr; incr /= 10; } return res; } int main() { int n = 50, p = 3; cout << "Square root of " << n << " up to precision " << p << " is: " << sqrtBinarySearch(50, 3) << endl; }
आउटपुट
Square root of 50 up to precision 3 is: 7.071