解题思路:第一种想到的是打表,直接把整数范围内的是3的立方的数打出来,比较trick 哈.这是一个纯粹的数学问题,看讨论区,有许多关于取对数的方法,log() 和log10(),其中log是以自然对数e为底的,这两个方式对于243来说,结果是不相同的,原因是以e为底的数产生了误差,因为3和e相差远比3和10相差的小,导致换底之后的结果有误差.
class Solution {
public:
bool isPowerOfThree(int n) {
if(n <= 0) return false;
double x = log10(n)/log10(3);
return x == floor(x);
}
};