数的三次方根
Solution:
浮点数二分
注意:0.001的三次方根是0.1,因此,r不能取n,应取max(1,n),
其他处理方式:l=-MAXN,r=MAXN
Code 1:
#include <cstdio>
#include <algorithm>
using namespace std;
double n;
int main()
{
scanf("%lf",&n);
double m=abs(n);
double l=0,r=max(1.0,m);
while(r-l>1e-8)
{
double mid=(l+r)/2;
if(mid*mid*mid>=m)r=mid;
else l=mid;
}
if(n<0)l=-l;
printf("%.6lf\n",l);
return 0;
}
Code 2:
#include <cstdio>
#include <algorithm>
using namespace std;
const double N=10000;
double n;
int main()
{
scanf("%lf",&n);
double l=-N,r=N;
while(r-l>1e-8)
{
double mid=(l+r)/2;
if(mid*mid*mid>=n)r=mid;
else l=mid;
}
printf("%.6lf\n",l);
return 0;
}

浙公网安备 33010602011771号