LeetCode5716:好因子的最大数目(数学、快速幂)

 解题思路:因为primeFactors比较大,所以需要使用快速幂。

 

 

class Solution:
    def quick_pow(self,base,x):
        ans = 1
        while x>0:
            if x%2==1:
                ans*=base%self.mod
            base=(base*base)%self.mod
            x=x//2
        return ans
    def maxNiceDivisors(self, primeFactors: int) -> int:
        self.mod = int(1e9+7)
        if primeFactors==1 or primeFactors==2:
            return primeFactors
        y = primeFactors%3
        cnt = primeFactors//3
        if y==0:
            #print(cnt)
            return self.quick_pow(3,cnt)%self.mod
        elif y==1:
            ans = self.quick_pow(3, cnt)
            return max(ans,self.quick_pow(3,cnt-1)*4)%self.mod
        else:
            return self.quick_pow(3,cnt)*2%self.mod

 

posted @ 2021-03-28 16:50  ISGuXing  阅读(80)  评论(0编辑  收藏  举报