使用 C++ 中的二分查詢法查詢數字的平方根,精確到指定精度
假設我們有一個正數 n 和精度 p。我們需要使用二分查詢技術找到數字 n 的平方根,精確到小數點後 p 位。因此,如果數字是 n = 50,而 p = 3,則輸出為 7.071。
為了解決這個問題,我們需要遵循以下步驟:
- 初始化起始值 start := 0 和結束值 end := 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
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP