#include <stdio.h>
int newSqrt(long n)
{
// if(n == 0) return 0;
long low, high, mid, tmp;
// 获取上下界
if (n > 1) {
low = 1;
high = n;
} else {
low = n;
high = 1;
}
// 二分法求开方
while (low <= high) {
mid = (low + high) / 2;
tmp = mid * mid;
if ((mid + 1) * (mid + 1) >= n && (mid - 1) * (mid - 1) <= n)
{
return mid;
} else if (tmp > n)
{
high = mid;
} else
{
low = mid;
}
}
return -1;
}
int main () {
//JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。
printf("%d", newSqrt(320000));
return 0;
}