Implement int sqrt(int x)
.
Compute and return the square root of x.
int sqrt(int x)
{
int i;
if (x == 0)
return 0;
if (x == 1 || x == 2 || x == 3)
return 1;
if (x <= 100000000)
{
for (i = 1; i <= 10000; i++)
{
if (i*i <= x && (i + 1)*(i + 1)>x)
return i;
}
}
if (x<1000000000)
{
for (i = 10000; i<31630; i++)
if (i*i <= x && (i + 1)*(i + 1)>x)
return i;
}
if (x<2000000000)
{
for (i = 31600; i<44723; i++)
if (i*i <= x && (i + 1)*(i + 1)>x)
return i;
}
if (x<2147395600)
{
for (i = 44720; i<46340; i++)
if (i*i <= x && (i + 1)*(i + 1)>x)
return i;
}
else return 46340;
}
代码写成这样,我也是醉了
int sqrt(int x)
{
int i;
if (x == 0)
return 0;
if (x == 1 || x == 2 || x == 3)
return 1;
if (x <= 100000000)
{
for (i = 1; i <= 10000; i++)
{
if (i*i <= x && (i + 1)*(i + 1)>x)
return i;
}
}
if (x<2147395600)
{
for (i = 10000; i<46340; i++)
if (i*i <= x && (i + 1)*(i + 1)>x)
return i;
}
else return 46340;
}
写成上边这样都会超时.............
int sqrt(int x)
{
int i;
if (x == 0)
return 0;
if (x == 1 || x == 2 || x == 3)
return 1;
if (x <= 100000000)
{
for (i = 1; i <= 10000; i++)
{
if (i*i <= x && (i + 1)*(i + 1)>x)
return i;
}
}
if (x<1000000000)
{
for (i = 10000; i<31630; i++)
if (i*i <= x && (i + 1)*(i + 1)>x)
return i;
}
if (x<2147395600)
{
for (i = 31600; i<46340; i++)
if (i*i <= x && (i + 1)*(i + 1)>x)
return i;
}
else return 46340;
写成这样却不会超时.....
看来要分三次处理
代码写成这样
已经没脸见人了......