मान लीजिए कि हमारे पास एक सकारात्मक संख्या n और सटीक p है। हमें बाइनरी सर्च तकनीक का उपयोग करके दशमलव स्थानों तक n से p तक की संख्या का वर्गमूल ज्ञात करना है। तो अगर संख्या n =50, और p =3 है, तो आउटपुट 7.071 है।
तो इसे हल करें, हमें कुछ चरणों का पालन करना होगा -
- प्रारंभ प्रारंभ करें:=0 और अंत:=n
- मध्य पूर्णांक के वर्ग की तुलना करें, यदि यह संख्या के बराबर है तो अभिन्न अंग पता चला है, अन्यथा आवश्यकतानुसार बाएं या दाएं देखें।
- एक बार जब हमने इंटीग्रल पार्ट के लिए टास्क पूरा कर लिया है, तो फ्रैक्शनल पार्ट के लिए करें।
- इन्क्रीमेंट वेरिएबल को 0.1 के रूप में प्रारंभ करें, फिर आंशिक भाग को p स्थानों तक परिकलित करें। प्रत्येक पुनरावृत्ति के लिए वृद्धि अपने पिछले मान के 1/10 वें स्थान पर बदल जाती है।
- अंत में उत्तर दें।
उदाहरण
#include<iostream>
using 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