整数二分模板: ACvving
long l = 0, r = Integer.MAX_VALUE;
while(l < r){
long mid = (l + r + 1) >> 1;
if(mid*mid <= x){
l = mid;
}else{
r = mid-1;
}
}
return (int)l;
实数二分
double l = 0,r = x;
while(r-l > 1e-4){
double mid = (l+r)/2;
if(mid*mid>=x){
r = mid;
}else{
l = mid;
}
}
int ans = (int)l+1;
if(ans*ans == x){
return ans;
}
return(int)l;