Getting wrong answer while finding square root of a number using logarithms

Viewed 28

My code to compute square root of a number:

class Solution {
public:
    int mySqrt(int x) {
        int result;
        result = exp(log(x)/2);  # Square root of number = antilog(log(number)/2)
        return result;
    }
};

This code fails only when input is x = 2147395600, the expected output is 46340, but my code's output is 46339.

Why did this happen?

Error image: https://ibb.co/8Pg9Lpd (1016 / 1017 test cases passed, my code failed only for input x = 2147395600)

Problem description:

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 1:

Input: 4
Output: 2

Example 2:

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