侧边栏壁纸
博主头像
GabrielxD

列車は必ず次の駅へ。では舞台は?私たちは?

  • 累计撰写 674 篇文章
  • 累计创建 128 个标签
  • 累计收到 20 条评论

目 录CONTENT

文章目录

【数学】判断一个数字是否可以表示成三的幂的和

GabrielxD
2022-06-20 / 0 评论 / 0 点赞 / 111 阅读 / 281 字
温馨提示:
本文最后更新于 2022-07-27,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

题目

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

提示:

  • 1 <= n <= 10^7

解题

方法一:进制转换

思路

如果一个数可以表示成若干个不同的三的幂之和,那么它转换成三进制后每位上不是 0 就是 1 ,如果出现了 2 那么该数就不能被如此表示。

代码

class Solution {
    public boolean checkPowersOfThree(int n) {
        String ternary = Integer.toString(n, 3);
        for (char bit : ternary.toCharArray()) {
            if (bit == '2') return false;
        }
        return true;
    }
}
class Solution {
    public boolean checkPowersOfThree(int n) {
        while (n > 0) {
            if (n % 3 == 2) return false;
            n /= 3;
        }
        return true;
    }
}
0

评论区