Leecode刷题之旅-C语言/python-326 3的幂

/*
 * @lc app=leetcode.cn id=326 lang=c
 *
 * [326] 3的幂
 *
 * https://leetcode-cn.com/problems/power-of-three/description/
 *
 * algorithms
 * Easy (42.85%)
 * Total Accepted:    14.2K
 * Total Submissions: 33.1K
 * Testcase Example:  '27'
 *
 * 给定一个整数,写一个函数来判断它是否是 3 的幂次方。
 * 
 * 示例 1:
 * 
 * 输入: 27
 * 输出: true
 * 
 * 
 * 示例 2:
 * 
 * 输入: 0
 * 输出: false
 * 
 * 示例 3:
 * 
 * 输入: 9
 * 输出: true
 * 
 * 示例 4:
 * 
 * 输入: 45
 * 输出: false
 * 
 * 进阶:
 * 你能不使用循环或者递归来完成本题吗?
 * 
 */
bool isPowerOfThree(int n) {       
     if(n<=0){
         return false;
     }
     while(n>1){            
         if(n%3!=0) return false;           
          n /=3;        
        }        
    return true;
}

和2的幂思路一样的算法。

但是题目有个进阶要求 不使用循环或者递归

这里计算最大的3的幂次方的数 然后判断n能否被这个数整除即可。

/*
 * @lc app=leetcode.cn id=326 lang=c
 *
 * [326] 3的幂
 *
 * https://leetcode-cn.com/problems/power-of-three/description/
 *
 * algorithms
 * Easy (42.85%)
 * Total Accepted:    14.2K
 * Total Submissions: 33.1K
 * Testcase Example:  '27'
 *
 * 给定一个整数,写一个函数来判断它是否是 3 的幂次方。
 * 
 * 示例 1:
 * 
 * 输入: 27
 * 输出: true
 * 
 * 
 * 示例 2:
 * 
 * 输入: 0
 * 输出: false
 * 
 * 示例 3:
 * 
 * 输入: 9
 * 输出: true
 * 
 * 示例 4:
 * 
 * 输入: 45
 * 输出: false
 * 
 * 进阶:
 * 你能不使用循环或者递归来完成本题吗?
 * 
 */
bool isPowerOfThree(int n) {      
    if(n<=0)
    {
        return false;
    }
    int max3Power=(int)pow(3,(int)(log(0x7fffffff)/log(3)));
    if (max3Power%n==0)
    {
        return true;
    }
    else
    {
        return false;
    }
}

--------------------------------------------------------------------------

python:

#
# @lc app=leetcode.cn id=326 lang=python3
#
# [326] 3的幂
#
# https://leetcode-cn.com/problems/power-of-three/description/
#
# algorithms
# Easy (42.85%)
# Total Accepted:    14.2K
# Total Submissions: 33.1K
# Testcase Example:  '27'
#
# 给定一个整数,写一个函数来判断它是否是 3 的幂次方。
# 
# 示例 1:
# 
# 输入: 27
# 输出: true
# 
# 
# 示例 2:
# 
# 输入: 0
# 输出: false
# 
# 示例 3:
# 
# 输入: 9
# 输出: true
# 
# 示例 4:
# 
# 输入: 45
# 输出: false
# 
# 进阶:
# 你能不使用循环或者递归来完成本题吗?
# 
#
class Solution:
    def isPowerOfThree(self, n: int) -> bool:
        return n > 0 and 3**19 % n == 0
原文地址:https://www.cnblogs.com/lixiaoyao123/p/10563968.html