判断一个数是否是3的幂。
求幂的不用想leet的规矩肯定要将除数自增的不然可能会超时。于是抄手就写oc了,看到题目竟然有要求可以不用循环,得网搜去吧,原来是用了log函数,这还真是没想到,也把代码贴上来做个记录吧。
循环逻辑的:
bool isPowerOfThree(int n) {
if (n <= 0)
return false;
bool result = true;
int p = 3;
while (n > 1) {
if (n < p) p = 3;
if (n % p == 0) {
n /= p;
p *= 3;
}
else {
result = false;
break;
}
}
return result;
}
对数逻辑的:
bool isPowerOfThree(int n) {
double logAns = log10(n) / log10(3);
return (logAns - int(logAns) == 0) ? true : false;
}