计蒜客 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;
}

猜你喜欢

转载自blog.csdn.net/weixin_42060896/article/details/82287490