美文网首页
69. Sqrt(x)

69. Sqrt(x)

作者: SilentDawn | 来源:发表于2018-06-03 21:32 被阅读0次

    Problem

    Implement int sqrt(int x).

    Compute and return the square root of x, where x is guaranteed to be a non-negative integer.

    Since the return type is an integer, the decimal digits are truncated and only the integer part of the result is returned.

    Example

    Input: 4
    Output: 2
    
    Input: 8
    Output: 2
    Explanation: The square root of 8 is 2.82842..., and since 
                 the decimal part is truncated, 2 is returned.
    

    Code

    static int var = [](){
        std::ios::sync_with_stdio(false);
        cin.tie(NULL);
        return 0;
    }();
    class Solution {
    public:
        int mySqrt(int x) {
            float f_x = (float)x;
            float xhalf = 0.5 * f_x;
            int i = *(int*)&f_x;
            i = 0x5f375a86- (i>>1);
            f_x = *(float*)&i;
            f_x = f_x*(1.5-xhalf*f_x*f_x);
            f_x = f_x*(1.5-xhalf*f_x*f_x);
            f_x = f_x*(1.5-xhalf*f_x*f_x);
            int ret = (int)(1/f_x);
            if(ret * ret > x)
                return ret - 1;
            return ret;
        }
    };
    

    Result

    69. Sqrt(x).png

    相关文章

      网友评论

          本文标题:69. Sqrt(x)

          本文链接:https://www.haomeiwen.com/subject/owqrsftx.html