整数拆分问题
给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。返回你可以获得的最大乘积 。
题目:
解法:
代码:
from typing import *
from math import *
from functools import cache
from queue import *
from heapq import *
from bisect import bisect_left
# start-----------------------------------------------------
class Solution:
def maxNiceDivisors(self, primeFactors: int) -> int:
ans = 0
mod = int(1e9+7)
q = primeFactors // 3
r = primeFactors % 3
# 快速幂
def qpow(a,b,m):
res = 1
while b:
if b & 1:
res = res * a % m
b >>= 1
a = a * a % m
return res
if r == 0: # 余数为 0
ans = qpow(3, q, mod)
elif r == 1: # 余数为 1 分配 2*2 比 3*1更好
ans = qpow(3, q-1, mod) * 4
else: # 余数为 2
ans = qpow(3, q, mod) * 2
return ans % mod
# end-------------------------------------------------------