整数二分模板: 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;