(LeetCode 每日一题) 326. 3 的幂 (数学)

题目:326. 3 的幂

在这里插入图片描述

思路:在n的范围内找到最大的 3的幂,假设为t,那么其他3的幂一定可以整除t。可以预处理出来找出t,这样后面0(1)就能判断了。

C++版本:

class Solution {
public:
    int solve(){
        long s=1;
        long mx=pow(2,31)-1;
        while(s*3<mx){
            s*=3;
        }
        return (int)s;
    }
    bool isPowerOfThree(int n) {
        int t=1162261467;
        //int t=solve();
        return n>0 && t%n==0;
    }
};

JAVA版本:

class Solution {
    int solve(){
        long s=1;
        long mx=(long)Math.pow(2,31)-1;
        while(s*3<mx){
            s*=3;
        }
        return (int)s;
    }
    public boolean isPowerOfThree(int n) {
        int t=1162261467;
        //int t=solve();
        return n>0 && t%n==0;
    }
}

GO版本:

func isPowerOfThree(n int) bool {
    // t:=solve()
    t:=1162261467
    return n>0 && t%n==0
}

func solve() int {
    var s int64 =1
    mx:=int64(math.Pow(2,31))-1
    for s*3<mx {
        s=s*3
    } 
    return int(s)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值