给定一个非负整数,求它的开方,向下取整。
输入
输入一个整数
输出
输出一个整数。
样例
标准输入 复制文本 |
8 |
标准输出 复制文本 |
2 |
提示
我们可以把这道题想象成,给定一个非负整数 a,求 f (x) = x 2 − a = 0 的解。因为我们只考 虑 x ≥ 0,所以 f (x) 在定义域上是单调递增的。考虑到 f (0) = −a ≤ 0, f (a) = a 2 − a ≥ 0,我们 可以对 [0, a] 区间使用二分法找到 f (x) = 0 的解。 注意,在以下的代码里,为了防止除以 0,我们把 a = 0 的情况单独考虑,然后对区间 [1, a] 进行二分查找。我们使用了左闭右闭的写法。