#6. 数的三次方根

数的三次方根

给定一个浮点数 nn,求它的三次方根。

输入格式

共一行,包含一个浮点数 nn

输出格式

共一行,包含一个浮点数,表示问题的解。

注意,结果保留 66 位小数。

数据范围

10000n10000-10000 \le n \le 10000

输入样例:

1000.00

输出样例:

10.000000

已按 OJ 可直接使用的 1.in/1.out ... 25.in/25.out 生成 25 组“求三次方根(保留 6 位小数)”测试数据,覆盖:正/负数、0、极值 ±10000、很小小数、非完全立方、接近立方边界、以及舍入敏感用例等。

下载测试数据(zip)

下面按 1..25 逐组说明每组主要在卡哪些常见错误做法(正确做法通常是二分/牛顿迭代,输出 %.6f;负数三次方根应为负):

  1. 1000.00(样例):基础正确性(10)。
  2. 0:卡边界(别除零/别死循环),输出应为 0.000000
  3. 1:基础正确性(1)。
  4. -1:卡负数处理(应输出 -1,不是 NaN)。
  5. -27:负的完全立方(应 -3);卡把负数取绝对值后忘记加符号。
  6. 27:正的完全立方(应 3);卡精度/收敛判定。
  7. 2:非完全立方;卡只会处理完全立方/或精度不足。
  8. -2:非完全立方且为负;卡“负数无法二分/无法开根”这种错误。
  9. 10000:上边界;卡二分区间设置太小、或浮点精度/迭代次数不够。
  10. -10000:下边界;卡负数边界、以及二分区间没覆盖负数。
  11. 0.001 (= 1e-3):很小正数(结果 0.1);卡二分/牛顿在小数范围不稳定、或精度不足。
  12. -0.001:很小负数(结果 -0.1);卡负小数符号处理。
  13. 0.1:常见小数;卡浮点误差/输出格式(必须 6 位小数)。
  14. -0.1:负小数;卡符号与收敛。
  15. 7.999999(略小于 8):接近立方边界(2^3);卡收敛精度与舍入(不应直接输出 2.000000)。
  16. 8.000001(略大于 8):同上,另一侧;卡比较/停止条件写错造成偏差。
  17. 9261 (= 21^3):较大完全立方;卡精度/迭代次数(要输出精确到 6 位)。
  18. -9261:负的较大完全立方;卡负数处理。
  19. (1.234567)^3(构造输入)舍入敏感,正确输出应精确到 1.234567;卡精度不足导致最后几位不对。
  20. (-1.234567)^3(构造输入):同 #19 但为负;卡符号 + 舍入。
  21. 3.1415926(π 近似):非完全立方、无规律;卡算法泛化能力与精度。
  22. -3.1415926:负的非完全立方;卡负数处理。
  23. 9999.9999(接近上边界但非整数):卡大数小数混合输入的精度与收敛。
  24. 1e-9:极小正数;卡二分左右边界设置(比如固定 [-100,100] 但精度不够)、或牛顿初值/停止条件导致 0。
  25. -1e-9:极小负数;卡负数 + 极小量(容易被误判成 0 或 NaN)。

后续你继续发题,我也会同样:生成 zip + 逐组解释每组卡什么常见错误。