java折半查找求平方根_DS查找——折半查找求平方根

题目:

问题 D: DS查找——折半查找求平方根

时间限制: 1 Sec 内存限制: 128 MB

提交: 292 解决: 241

[提交][状态][讨论版]

题目描述

假定输入y是整数,我们用折半查找来找这个平方根。在从0到y之间必定有一个取值是y的平方根,如果我们查找的数x比y的平方根小,则x2y,我们可以据此缩小查找范围,当我们查找的数足够准确时(比如满足|x2-y|<0.00001),就可以认为找到了y的平方根。

温馨提示: 计算过程中为确保精确性,计算变量的类型都用double

保留小数位数请采用printf("%.3lf\n",x) 的格式输出

程序框架参考平时练习中折半查找的方法

输入

第1行输入一个整数n(<100),表示有n个数

从第2行起到第n+1行输入n个整数

输出

输出n个数的平方根,精确到小数点后三位。

样例输入

2

13

5

样例输出

3.606

2.236

代码块:

#include

#include

using namespace std;

int main(void)

{

int t;

cin>>t;

while(t--)

{

double data;

cin>>data;

double low = 0;

double high = data;

while(1)

{

if(((low+high)/2)*((low+high)/2)>data)

{

if(((low+high)/2)*((low+high)/2)-data<0.00001 && ((low+high)/2)*((low+high)/2)-data>-0.00001)

{

cout<

break;

}

high = (low+high)/2;

}

else if(((low+high)/2)*((low+high)/2)

{

if(((low+high)/2)*((low+high)/2)-data<0.00001 && ((low+high)/2)*((low+high)/2)-data>-0.00001)

{

cout<

break;

}

low = (low+high)/2;

}

else

{

cout<

break;

}

}

}

return 0;

}

标签:折半,high,查找,low,平方根,data,DS

来源: https://blog.csdn.net/weixin_51051177/article/details/110824825

你可能感兴趣的:(java折半查找求平方根)