AcWing 790. 数的三次方根
原题链接
简单
作者:
咲张熊猫人
,
2021-01-13 22:05:26
,
所有人可见
,
阅读 339
C++ 代码
#include<iostream>
using namespace std;
double n;
int main()
{
cin >> n;
double l = -10010, r = 10010;
double mid;
for(int i = 0; i<100; i++)
{
mid = (l+r) / 2;
if(mid * mid * mid >= n) r = mid;
else l = mid;
}
printf("%.6lf\n",mid);
}
应该注意的问题
1. 这里的 r 的取值应该最保险的就是直接取题目的范围,之前我写的是令r = n;
这样写在测试一些比较大的正数的时候是没有问题,但如果测试小数就有问题了,例如
n = 0.001, 但我们知道其解为 x = 0.1 , 显然如果我们把r = 0.001, 显然解就不在我们的范围之中了,最后二分的结果将为r表示的数
同样的道理 如果是一个负数,其解同样不在范围之中。故这里将其写为题目给出的范围是最正确的。