题解 | #求解立方根#
求解立方根
https://www.nowcoder.com/practice/caf35ae421194a1090c22fe223357dca
一种另类解法,按位求取数值 ,其中求取过程可封装函数,但未封装。
#include <iostream>
using namespace std;
int main() {
double num;
cin>>num;
int sign = 0;
if(num<0){
sign=1;
num *= -1;
}
int lastVal = 0, curVal = 0;
int i;
// 求个位
for (i=0;i<10;i++){
curVal = lastVal*10+i;
if (curVal*curVal*curVal > num)
{
lastVal = lastVal*10+i-1;
break;
}
}
// 求十分位
for (i=0;i<10;i++){
curVal = lastVal*10+i;
if (curVal*curVal*curVal > num*1000)
{
// cout<<lastVal<<" "<<i <<" " <<endl;
lastVal = (lastVal*10 + i-1);
break;
}
}
// 求百分位
for (i=0;i<10;i++){
curVal = lastVal*10+i;
if (curVal*curVal*curVal > num*1000000)
{
lastVal = (lastVal*10 + i-1);
break;
}
}
// 四舍五入
int resInt = lastVal;
int lastNum = resInt % 10;
resInt /=10;
if (lastNum>=5){
resInt++;
}
// 应用符号
if (sign==1)
{
resInt *= -1;
}
cout<<((float)resInt)/10<<endl;
}
