- 1. 题目
- 2. 读题(需要重点注意的东西)
- 3. 解法
- 4. 可能有帮助的前置习题
- 5. 所用到的数据结构与算法思想
- 6. 总结
思路:浮点数的二分查找
3. 解法---------------------------------------------------解法---------------------------------------------------:
#include4. 可能有帮助的前置习题 5. 所用到的数据结构与算法思想using namespace std; int main(){ double n; scanf("%d",&n); double l=-10000,r=10000; while(r-l>1e-8){ double m=(l+r)/2; if(m*m*m>=n) r=m; else l=m; } printf("%lfn",l);// 二分就是找start 和end 足够接近一个真实值 return 0; }
- 浮点数的二分
1. 浮点数的二分,推荐完全背下来
2. 浮点数二分模板
while(check(x)){
double m=(l+r)/2;
if(m*m*m>=n) r=m;
else l=m;
}
3. 一般要求精度为小数点后6位的话,r-l就要大于1e-8;如果要保留小数点后8位的话,r-l就要大于1e-10;
即要保留多少位,就在判断语句里取大于它的两位的精度就可以。
4. %f代表单精度浮点型数据(float),有效位数为7位;
%lf代表双精度浮点型数据(double),有效位数为16位。
5. cout << l << endl 输出1.234567默认会默认输出6位有效数字1.23457(四舍五入6变为了7),
输出10.0000会默认输出10;要使用cout输入的话,需要作其他处理,这里不再赘述。


![[AcWing]790. 数的三次方根(C++实现)模板题 [AcWing]790. 数的三次方根(C++实现)模板题](http://www.mshxw.com/aiimages/31/352691.png)
