设计函数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");