来源: 模板题,AcWing
算法标签: 二分
给定一个浮点数n,求它的三次方根。
输入格式
共一行,包含一个浮点数n。
输出格式
共一行,包含一个浮点数,表示问题的解。
注意,结果保留6位小数。
数据范围
−10000≤n≤10000
输入样例:
1000.00
输出样例:
10.000000
思路
这道题本身即在指定范围中,一个数的三次方满足条件即成立。
我们可以用二分来解决,当mid^3>n,即r=mid,else即可。
实数二分相对整数二分更加简便。
这道题我们只需要明确精度的要求合法输出即可。
二分是一种思想的概念在这道题目当中更为明显。
C++ 代码
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
double n;
cin>>n;
double l= -10000,r=10000;//边界
while(r-l>1e-8)//对精度要求高,于是精确多2位
{
double mid=(l+r)/2;
if(mid*mid*mid>=n)r=mid;//如果三次方在右边,即往左走
else l=mid;
}
printf("%lf",r);
//printf("%6lf",r);
//cout<<fixed<<setprecision(6)<<r;//以上三种方式都可以
return 0;
}
赞!
哈哈哈