একটি ধনাত্মক সংখ্যা n এবং প্রিসিশন p দেওয়া আছে। বাইনারি সার্চ ব্যবহার করে n-এর বর্গমূল p দশমিক স্থান পর্যন্ত বের করতে হবে। উদাহরণ: n=50, p=3 -> 7.071।
- ইন্টিজার পার্ট বাইনারি সার্চ দিয়ে বের করুন (start=0, end=n)।
- ফ্র্যাকশনাল পার্টে 0.1 ইনক্রিমেন্ট দিয়ে p প্লেস পর্যন্ত লুপ চালান।
উদাহরণ
#include <iostream>
using namespace std;
float sqrtBinarySearch(int num, int p) {
int left = 0, right = num, mid;
float res = 0;
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);
return 0;
}
আউটপুট
Square root of 50 up to precision 3 is: 7.071