資源限制
時間限制:1.0s 內存限制:256.0MB
問題描述
進行數學運算是計算機的主要能力,利用計算機的重複計算能力可以幫助人們求解一些十分複雜的數學運算,比如高次方程、求根,求平方等。根號運算是數學的基本運算,對於無理數的求解,我們可以使用兩邊取值,不斷逼近的方法進行求解。現要求你編程實現根號3的求解。
輸入格式
無輸入
輸出格式
輸出根號3的求解結果
樣例輸入
無
樣例輸出
無
數據規模和約定
初始邊界值分別爲:low=1.0,high=2.0,更新邊界值使用平均數,並要求循環20次後輸出結果。
解題思路:
二分法可以用於解決該題,當然二分法的實現可以用遞歸,這裏我直接用while循環,每次取low和high的中間值並平方,判斷大於3還是小於3,如果小於3就把mid的值賦予low,如果大於3就把mid的值賦予high,循環20次輸出mid,代碼如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
double low = 1.0;
double high = 2.0;
double mid;
int i = 0;
while(i < 20){
mid = (high + low) / 2;
if(mid * mid < 3){
low = mid;
}else{
high = mid;
}
i ++;
}
cout << mid;
return 0;
}