列表

详情


1780. 判断一个数字是否可以表示成三的幂的和

给你一个整数 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

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: bool checkPowersOfThree(int n) { } };

golang 解法, 执行用时: 0 ms, 内存消耗: 1.8 MB, 提交时间: 2022-11-27 12:32:50

func checkPowersOfThree(n int) bool {
    for n != 0 {
        if n % 3 == 2 {
            return false
        }
        n /= 3
    }
    return true
}

cpp 解法, 执行用时: 0 ms, 内存消耗: 5.8 MB, 提交时间: 2022-11-27 12:32:05

class Solution {
public:
    bool checkPowersOfThree(int n) {
        //最多可以余1,然后看能不能整除3
        while(n){
            if(n%3==1||n%3==0){
                n/=3;
            }else{
                return false;
            }
        }
        return true;
    }
};

python3 解法, 执行用时: 40 ms, 内存消耗: 14.9 MB, 提交时间: 2022-11-27 12:31:43

class Solution:
    def checkPowersOfThree(self, n: int) -> bool:
        while n != 0:
            if n % 3 == 2: return False
            n = n // 3
        return True

javascript 解法, 执行用时: 64 ms, 内存消耗: 41.1 MB, 提交时间: 2022-11-27 12:30:14

/**
 * @param {number} n
 * @return {boolean}
 */
var checkPowersOfThree = function(n) {
    while(n) {
        if (n % 3 === 2) return false;
        n = Math.floor(n / 3);
    }
    return true;
};

上一题