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