设计函数int sqrt(int x),计算x的平方根。
格式:
输入一个数x,输出它的平方根。直到碰到结束符号为止。
千万注意:是int类型哦~
输入可以如下操作:
while(cin>>x)
或者
while(scanf("%d", &x) != EOF)
样例输入
1 2 3 4 5 6 7 8 9
样例输出
1 1 1 2 2 2 2 23
首先 采用了 一个比较简单的方法
#include<iostream> using namespace std; int sqrt(int x) { int i,tag=0; for(i=0;i<=x;i++) { if(i*i>x) { tag=1; break; } if(i*i==x) { tag=2; break; } } if(i==1) return 1; if(tag==1) return i-1; if(tag==2) return i; } int main() { int x; while(cin>>x) { cout<<sqrt(x)<<endl; } return 0; }
但是报错 时间超时 显然这个题目 是要你去精简算法 降低时间的
#include<iostream> #include<cmath> using namespace std; int sqrt(int x) { double n=1.0; while(abs(n*n-x)>1e-5) { n=(x/n+n)/2.0; } return n; } int main() { int x; while(cin>>x) { cout<<sqrt(x)<<endl; } return 0; }