Giả sử chúng ta có một số dương n và độ chính xác p. Chúng ta phải tìm căn bậc hai của số n đến chữ số thập phân p bằng kỹ thuật tìm kiếm nhị phân. Vì vậy, nếu số là n =50 và p =3, thì đầu ra là 7,071.
Vì vậy, giải quyết vấn đề này, chúng ta phải làm theo một số bước -
- Khởi tạo start:=0 và end:=n
- So sánh bình phương của số nguyên giữa, nếu giá trị này bằng số thì phần tích phân đã được tìm ra, nếu không, hãy tìm bên trái hoặc bên phải theo yêu cầu.
- Khi chúng ta đã hoàn thành nhiệm vụ cho phần tích phân, hãy làm cho phần phân số.
- Khởi tạo biến số tăng là 0,1, sau đó tính phần phân số lên đến p vị trí. Đối với mỗi lần tăng số lần lặp lại thay đổi thành 1/10 giá trị trước đó của nó.
- Cuối cùng, hãy trả lại câu trả lời.
Ví dụ
#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; }
Đầu ra
Square root of 50 up to precision 3 is: 7.071