class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param x int整型 
     * @return int整型
     */
    int mysqrt(int x) {
        // write code here
        if(x == 0) return 0;
        if(x == 1) return 1;

        //二分法
        int margin_left = 0;
        int margin_right = x;
        int mid;
        int result = 0;

        while(margin_left <= margin_right){
            mid = margin_left + (margin_right-margin_left)/2;
            long long squre = (long long) mid*mid;
            if(squre == x){
                return mid;
            }else if(squre < x){
                result = mid;
                margin_left = mid + 1;
            }else if(squre > x){
                margin_right = mid - 1;
            }
        }
        return result;
    }
};