给出非负整数x,范围0 <= x <=,要求在不使用任何内置指数函数和算符(pow(x, 0.5) x ** 0.5)的情况下返回x的算数平方根
思路无非就是1.模拟出指数函数迭代过程得出近似结果2.用其他函数替代平方根函数得到结果
这篇笔记会记录官方答案给出的三种题解
相关代码
🟦使用指数函数exp()和对数函数ln代替平方根函数
if(x == 0) cout << 0 << endl;
int ans = exp(0.5 * log(x));
cout << ((long long)(ans + 1) * (ans + 1) <= x ? ans + 1 : ans) << endl
;
log()是e为底的对数
log10()是10为底的对数
为什么最后还要比较ans+1和ans,是因为计算机无法存储浮点数的精确值(参考IEEE754)指数