跳到主要内容

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

链接:1780.判断一个数字是否可以表示成三的幂的和
难度:Medium
标签:数学
简介:给你一个整数 n ,如果你可以将 n 表示成若干个不同的三的幂之和,请你返回 true ,否则请返回 false 。

题解 1 - cpp

  • 编辑时间:2022-12-09
  • 内存消耗:5.7MB
  • 编程语言:cpp
  • 解法介绍:如果是由 3 的幂组成,那一定是可以模 3 等于 0 或者减一模 3 等于 0。
class Solution {
public:
bool checkPowersOfThree(int n) {
if (n % 3 != 0) n--;
for (; n && n % 3 == 0; n--)
while (n % 3 == 0) n /= 3;
return !n;
}
};

题解 2 - cpp

  • 编辑时间:2022-12-09
  • 内存消耗:5.7MB
  • 编程语言:cpp
  • 解法介绍:优化后为模 3 为 0 或 1。
class Solution {
public:
bool checkPowersOfThree(int n) {
while (n) {
if (n % 3 == 2) return false;
n /= 3;
}
return true;
}
};