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; } ```

如何确保输出的六位小数是准确的?

确保输出的六位小数准确,需要保证第七位数字不被进位,这样才能避免误差。

➡️

继续阅读