leetcode【数学】-----326. Power of Three(3的幂)

1、题目描述

2、分析

        这道题使用循环很容易能得到结果,只需要将这个数不停地除以3,最后判断迭代之后的商是否为1。但是题目中说可以不使用循环,那么就需要一点取巧的办法,题目中输入的是一个int型数据,那么int类型正数范围是0-2^31,这个范围内最大的3的次方数是1162261467,这样我们只需要判断这个数能不能被n整除即可。

3、代码

class Solution {
public:
    bool isPowerOfThree(int n) {
        while (n && n % 3 == 0) {
            n /= 3;
        }
        return n == 1;
    }
};


class Solution {
public:
    bool isPowerOfThree(int n) {
        return (n > 0 && 1162261467 % n == 0);
    }
};

4、相关知识点

        第二种方法的思路需要了解。

posted @ 2019-05-06 16:21  吾之求索  阅读(131)  评论(0)    收藏  举报