给你一个整数 n ,如果你可以将 n 表示成若干个不同的三的幂之和,请你返回 true ,否则请返回 false 。
对于一个整数 y ,如果存在整数 x 满足 y == 3x ,我们称这个整数 y 是三的幂。
示例 1:
输入: n = 12
输出: true
解释: 12 = 31 + 32
示例 2:
输入: n = 91
输出: true
解释: 91 = 30 + 32 + 34
示例 3:
输入: n = 21
输出: false
提示:
1 <= n <= 107
由题目知道该数为若干3的n次幂值的和,可以通过循环取3的余 如果最终结果包含[0,1,2] 为2表示无法减去1(3^0)后使最终结果为0返回false 否则返回true
解:
const checkPowersOfThree = function(n) {
while(n !== 0){
if(n % 3 == 2){
return false
}
n = Math.floor(n / 3)
}
return true
};
// js tostring方法可转换进制
const checkPowersOfThree = function(n) {
return !n.toString(3).includes("2")
};