AcWing 790. 数的三次方根
原题链接
简单
作者:
天元之弈
,
2022-09-18 21:55:21
,
所有人可见
,
阅读 758
浮点数二分模板:
while (r - l >= EPS)
{
double mid = (l + r) / 2;
if (check(mid) l = mid;
else r = mid;
}
注意:
- 要求保留 $k$ 位小数,$EPS$ 就要取 $1e-(k+2)$。
- $l$ 和 $r$ 直接等于 $mid$ 即可,不用增加或减少
- 取 $mid$ 不能用
>>
了,因为是浮点数
代码
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
double n;
int main()
{
double l = -10000, r = 10000;
cin >> n;
while (r - l >= 1e-8)
{
double mid = (l + r) / 2;
if (mid * mid * mid <= n) l = mid;
else r = mid;
}
printf("%lf", l);
return 0;
}