AcWing 790. 数的三次方根——算法基础课题解
💡
原文中文,约1300字,阅读约需3分钟。
📝
内容提要
给定一个浮点数n,使用二分法求它的三次方根,保留6位小数。
🎯
关键要点
- 题目要求给定一个浮点数n,求它的三次方根。
- 输入格式为一行包含一个浮点数n,输出格式为一行包含结果,保留6位小数。
- 数据范围为−10000≤n≤10000。
- 示例输入为1000.00,输出为10.000000。
- 使用二分法求解,初始区间为[-22, 22]。
- 循环条件为(r - l) > 1e-8,以确保结果精度。
- 使用1e-8是为了避免因四舍五入导致的误差,确保第七位数字准确。
- 保留六位小数时,需保证第七位不被进位,以得到正确结果。
- 提供了C和Go语言的实现代码示例。
- 模板中包含了检查函数和二分搜索函数的基本结构。
❓
延伸问答
如何使用二分法求浮点数的三次方根?
使用二分法时,初始区间为[-22, 22],循环条件为(r - l) > 1e-8,逐步缩小区间直到找到三次方根。
为什么要使用1e-8作为循环条件?
使用1e-8是为了避免因四舍五入导致的误差,确保第七位数字准确,从而正确保留六位小数。
输入浮点数的范围是什么?
输入浮点数的范围为−10000≤n≤10000。
输出结果的格式是什么?
输出结果为一个浮点数,保留6位小数。
能否提供C语言的实现代码示例?
可以,C语言实现代码如下: ```c #include <iostream> using namespace std; int main() { double x; cin >> x; double l = -22, r = 22; while ((r - l) > 1e-8) { double mid = (l + r) / 2; if (mid * mid * mid >= x) r = mid; else l = mid; } printf("%.6lf", l); return 0; } ```
如何确保输出的六位小数是准确的?
确保输出的六位小数准确,需要保证第七位数字不被进位,这样才能避免误差。
➡️