xqn2017

导航

326. Power of Three

原文题目:

326. Power of Three

读题:

题目很简单,就看是不是3的次方,如果是那当然能够被3整除,并且不断除以3之后,最后结果为1

但题目不推荐这种解法,题目希望能够不用递归或者循环,有几种解法如下:

循环实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution
{
public:
    bool isPowerOfThree(int n)
    {
        if (n <1) return false;
        while(n%3 ==0)
        {
            n = n/3;
        }
        return n==1;
    }
};

列举实现:

由于是int型,最大正整数为2147483647,列出所有3的次方数

1
2
3
4
5
6
7
8
9
class Solution { 
public
    bool isPowerOfThree(int n) { 
        return (n == 1 || n == 3 || n == 9 || n == 27 || n == 81 || n == 243 || n == 729
            || n == 2187 || n == 6561 || n == 19683 || n == 59049 || n == 177147 || n == 531441
            || n == 1594323 || n == 4782969 || n == 14348907 || n == 43046721 || n == 129140163
            || n == 387420489 || n == 1162261467); 
    
};

找规律:

由于最大的3的次方数为1162261467,那么其他比这个数小的3的次方数必然能够被这个数整除,因此

1
2
3
4
5
6
class Solution { 
public
    bool isPowerOfThree(int n) { 
        return n>0?!(1162261467 % n):0;
    
};

  

posted on   xqn2017  阅读(192)  评论(0编辑  收藏  举报

努力加载评论中...
点击右上角即可分享
微信分享提示