#define METHOD 2 #include bool isPowerOfThree(int n) { #if METHOD == 1 if (n <= 0) return false; while (n != 1) { if (n % 3 != 0) return false; n /= 3; } return true; #elif METHOD == 2 // 在题目给定的 32 位有符号整数的范围内,最大的 3 的幂为 3^19 = 1162261467。 // 我们只需要判断 n 是否是 3^19 的约数即可。 return n > 0 && 1162261467 % n == 0; #endif }