最简单的暴力做法
for(int i = - 45.0; i <= 45.0; i += e )
如果满足条件就输出,但是很明显,这个效率很低,及容易超时
这题二分嘛:
#include<bits/stdc++.h>
#define e 1e-7
using namespace std;
double x;
inline double f(double x){return x*x*x;}
int main(void){
cin>>x;
double l = -46.0 , r = 46.0;
//1000的三次方根不会超过 46 吧,减少二分次数(虽然没有什么太大优化,但也是优化)
while(r - l > e){
double mid = ( l + r ) / 2;
if(f(mid) > x) r = mid;
else l = mid;
}
printf("%06lf",l);
return 0;
}