整数n求其整数近似平方根r , 使得 r2<= n <(r+1)2
输入范围是
0---10^32
超过这个范围的可以用同样的算法,使用高精度计算求整数解.
输入格式
1
2
3
4
输出
1
1
1
2
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char num[1000];
int i,j,length;
double l,k;
while(cin>>num,strcmp(num,"0")!=0)
{
length=strlen(num);
for(i=0,k=0.0,l=0.0;i<length;++i)
{
k*=10;
k+=(double)(num[i]-'0');
if( i==0&&length%2==1 || length%2==1&&i%2==0
|| length%2==0&&i%2==1)
{
for(j=0;j<11;++j)
{
if( (l*20+j)*j > k)
{
--j;
cout<<j;
k=k-(l*20+j)*j;
l*=10;
l+=j;
break;
}
}
}
}
cout<<endl;
}
return 0;
}