练习题23-求根

原题目:
实现 int sqrt(int x) 函数。
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
示例 1:
输入: 4
输出: 2

示例 2:
输入: 8
输出: 2
说明: 8 的平方根是 2.82842…,
由于返回类型是整数,小数部分将被舍去。

思路:根据根与数的关系,可以推出练习题23-求根_第1张图片
用exp函数计算指数函数的值,用log函数计算lnx函数的值
注意:
两个根相乘可以会导致溢出,相乘之后应该先强制转成long long 类型
然后用return返回int值

代码:

class Solution {
public:
    int mySqrt(int x) {
            if (x == 0) {
            return 0;
        }
        int gen = exp(0.5 * log(x));
        return ((long long)(gen + 1) * (gen + 1) <= x ? gen + 1 : gen);
    }
};

练习题22-验证回文串

你可能感兴趣的:(练习题)