目录
原题链接:790-简单-数的三次方根
前言
算法是考研和实习找工作进大厂的必备工具,为了23考研以及日后进大厂,开始学习算法!
作者简介
大家好,我是977,一个正在慢慢进步的程序猿小白,很高兴能在这里遇见大家,每天一点点成长,一起早日成为大佬!!!
算法基础课共106题
这是我的第6/106题
题目描述
给定一个浮点数 n,求它的三次方根。
输入格式
共一行,包含一个浮点数 n。
输出格式
共一行,包含一个浮点数,表示问题的解。
注意,结果保留 6 位小数。
数据范围
−10000≤n≤10000
输入样例
1000.00
输入样例
10.000000
思路解析:
算法一:二分查找 ( Binary Search )
时间复杂度:O(nlog(n))
解题思路:
1.设置左右边界
2.使用二分查找,找出值
#include<iostream>
using namespace std;
int main()
{
double x;
scanf("%lf",&x);
double l = -100,r = 100;
while(r - l > 1e-8){
double mid = (l + r) / 2;
if(mid * mid * mid >= x){
r = mid;
}
else l = mid;
}
printf("%.6lf\n",r);
return 0;
}
算法二: 不讲武德
时间复杂度:O(1)
解题思路:
1.输入数值
2.判断是否大于0
3.大于零直接使用pow函数
4.不大于零使用pow函数,结果加负号
#include<stdio.h>
#include<math.h>
int main()
{
double n;
scanf("%lf",&n);
if(n>=0)
printf("%lf",pow(n,1/3.0));
else
printf("-%lf",pow(-n,1/3.0));
return 0;
}
结语
学习贵在坚持,Acwing算法基础课,每日一题
期待各位的关注和监督