1、幂
幂是指数运算的结果,比如 可以看作b个a相乘,可以叫做a的b次幂,也可以叫做a的b次方。
在C/C++中,我们可以通过 pow(a,b)函数来对幂进行运算
2、对数
对数是对幂的逆运算,当a的b次方等于X时(a>0&&a!=1),即X = ,那么b叫做以a为底X的对数,a叫做对数的底数,X为真数,记作 b = (loga)X。
在C/C++中,我们可以用log2(X)来计算以2为底X的对数X
3、换底公式
高中数学我们学习对数的时候会推导出一个换底公式
所以在 C语言中,如果我们要求以 a 为底 b 的对数,只需要将底换成 2 求解即可
4、练习
leetcode:342. 4的幂 - 力扣(LeetCode)
给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。
整数 n 是 4 的幂次方需满足:存在整数 x 使得 n ==
解题:
bool isPowerOfFour(int n){
if(n <= 0) {
return false; // (1)
}
int x = (int)(log2(n) / log2(4) + 1e-8); // (2)
return fabs(n - pow(4, x)) < 1e-8; // (3)
}
(1)判断n<=0的特殊情况
(2)换底公式,并加上一个精度防止取整时出错
(3)浮点数相等判断
注意:
两个浮点数的判等需要采用 如下方式:fabs(a - b) < 0.00000001