0 题目来源

acwing

1 涉及到的知识点

实数二分
注意数据范围和精度限制,精度一般在while循环条件中体现,while循环中的条件一般要比要求的精度小两个数量级。

2 题目描述

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

3 输入输出

输入格式:
共一行,包含一个浮点数 nn。
输出格式:
共一行,包含一个浮点数,表示问题的解。
注意,结果保留 66 位小数。
数据范围:
−10000≤n≤10000

4 样例

输入样例:
1000.00
输出样例:
10.000000

5 思路

本题为典型实数二分模板题,直接在-10000到10000之间用二分法寻找n的三次方根即可,如下:

6 代码

  1. #include<iostream>
  2. #include<cmath>
  3. using namespace std;
  4. double bs(double n)
  5. {
  6. double l=-10000,r=10000;
  7. double mid;
  8. while((r-l)>1e-8)
  9. {
  10. mid=(l+r)/2;
  11. if(mid*mid*mid>=n)
  12. r=mid;
  13. else
  14. l=mid;
  15. }
  16. return mid;
  17. }
  18. int main()
  19. {
  20. double n;
  21. cin>>n;
  22. printf("%.6f",bs(n));
  23. return 0;
  24. }