计蒜客 X的平方根(二分法)
设计函数int sqrt(int x)
,计算 xx 的平方根。
输入格式
输入一个 整数 xx,输出它的平方根。直到碰到文件结束符(EOF
)为止。
输出格式
对于每组输入,输出一行一个整数,表示输入整数的平方根。
样例输入复制
1 2 3 4 5 6 7 8 9
样例输出复制
1 1 1 2 2 2 2 2 3
分析:利用二分法不断分割,到达足够的精度即可;
#include<iostream>
#include<cmath>
#include<string.h>
#include<algorithm>
using namespace std;
int nsqrt(int n)
{
double x=0,y=n*1.0;
double mid=1.0,limit;
limit=y-mid*mid;
while(limit>0.001)//控制精度
{
mid=(x+y)/2.0;
if(mid*mid>=n)
y=mid,
limit=mid*mid-n;
else x=mid,limit=n-mid*mid;
}
return mid;
}
int main()
{
int n;
while(~scanf("%d",&n)){
printf("%d\n",nsqrt(n));
}
return 0;
}