题目地址:
https://www.acwing.com/problem/content/792/
给定一个浮点数 n n n,求其三次方根。保留 6 6 6位小数。
输入格式:
共一行,包含一个浮点数
n
n
n。
输出格式:
共一行,包含一个浮点数,表示问题的解。
数据范围:
−
10000
≤
n
≤
10000
-10000\le n \le 10000
−10000≤n≤10000
浮点数二分。代码如下:
#include <iostream>
using namespace std;
// 这里精度需要比保留的小数位数多2,题中是保留6位小数,所以此处是1e-8
const double eps = 1e-8;
int main() {
double n;
cin >> n;
double l = -50, r = 50;
while (l + eps < r) {
double m = l + (r - l) / 2.0;
if (m * m * m > n) r = m;
else l = m;
}
printf("%.6lf", l);
}
时间复杂度 O ( log r / ϵ ) O(\log r/\epsilon) O(logr/ϵ), r r r是搜索区间长度, ϵ \epsilon ϵ是允许的误差。

325

被折叠的 条评论
为什么被折叠?



