计蒜客-X的平方根

设计函数int sqrt(int x),计算 x 的平方根

输入格式

输入一个 整数 xx,输出它的平方根。直到碰到文件结束符(EOF)为止。

输出格式

对于每组输入,输出一行一个整数,表示输入整数的平方根。

样例输入

1
2
3
4
5
6
7
8
9

样例输出

1
1
1
2
2
2
2
2
3

这道题当时很快就做出来了,用的是循环,挨个去试,当提交的时候,被告知超时了,才发现这种做法可行,但是时间复杂度很高。
贴一下代码:

#include<stdio.h>
int sqrt_(int x){
    for(int i=0;i<=x;i++){
        if(i*i==x||((i+1)*(i+1)>x))
        {
            return i;
            break;
        }
    }
    }
int main(){
    int x;
    while(scanf("%d",&x)!=EOF){
        printf("%d\n",sqrt_(x));
    }
}

改进代码如下:

int sqrt_(int x){
       int sum =x;
       int j;
       for(j = 1;j <= sum; j++) {
              x =x -(2*j-1);
              if(x< 0) return j-1;
              if(x== 0) return j;
       }
       return 0;
}
printf("I LOVE BOSS");
点赞