转换 333 进制,如果每一位非 000 即 111 ,returntruereturn\ truereturn true (数字 000 除外)。
如果任意一位为 222 ,returnfalsereturn\ falsereturn false 。
证明:
对于第 ppp 位,
如果 p=0p=0p=0 ,这一位不需要表示。
如果 p=1p=1p=1 , 3p3^p3p 表示这一位的数。
如果 p=2p=2p=2 ,对于第 ppp 位, 2×3p≠3p2\times 3^p\ne 3^p2×3p=3p ,低位和高位对第 ppp 位无影响 。所以第 ppp 位无法表示成 333 的幂次。
辗转相除求进制转换即可。
提示 : 类比 101010 进制。
class Solution {
public:bool checkPowersOfThree(int n) {while(n) {if(n%3==2) return false;n/=3;}return 0==n;}
};