LeetCode | 3的冪

一、題目描述

給定一個整數,寫一個函數來判斷它是否是 3 的冪次方。

示例 1:

輸入: 27
輸出: true

示例 2:

輸入: 0
輸出: false

示例 3:

輸入: 9
輸出: true

示例 4:

輸入: 45
輸出: false

進階:
你能不使用循環或者遞歸來完成本題嗎?

二、題解思路

  1. 循環求冪然後比較大小,等於的時候是是 3 的冪次方,不等於或者大於則不是。
  2. n 大於0,並且int類型的最大3 的冪次方爲1162261467,則n 應該是被取餘爲0的。

三、程序實例

class Solution {
public:
    bool isPowerOfThree(int n)
    {
        return n > 0 && 1162261467%n == 0;
    }
    
    bool isPowerOfThree1(int n) {
        int i = 0;
        double a = 0;
        while((a = pow(3, i++)) <= n)
        {
            if(a == n)
                return true;
            else if(a <= n / 7) // 提升效率,太小了則多加一次冪,沒研究過什麼值的時候最好
                i++;
        }
        return false;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章