欢迎24级新生

2111. 求开方

给定一个非负整数,求它的开方,向下取整。

输入

输入一个整数

输出

输出一个整数。

样例

标准输入 复制文本
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] 进行二分查找。我们使用了左闭右闭的写法。

登录以提交代码。
单点时限 1 秒
内存限制 128 MB
提交 0
通过 0