给定一个浮点数 n,求它的三次方根。
输入格式
共一行,包含一个浮点数 n。
输出格式
共一行,包含一个浮点数,表示问题的解。
注意,结果保留 6 位小数。
数据范围
−10000≤n≤10000
输入样例:
1000.00
输出样例:
10.000000
解题思路:使用二分法不断缩小范围直到找到n.
具体代码:
#include <iostream>
#include <stdio.h>
#include <iomanip>
#include <cmath>
using namespace std;
const int N = 100010;
int q;
double n, mid;
signed main()
{
scanf("%lf", &n);
if(n < 0)
{
n = - n;
q = 1;
}
double l = 0, r = max(1.0, n); //若n=0.001,mid = 0.1,而0.1大于n,所以要在1,与n中找出最大的一个
while(fabs(r - l) > 1e-8)
{
mid = (l + r) / 2;
if(mid * mid * mid >= n) r = mid;
else l = mid;
}
if(q) printf("%lf", -l);
else printf("%lf", l);
}
这题还是挺简单的,具体细节看代码应该是能看懂的,继续加油!