題目連結(jié):
題目意譯:
你被給定一正整數(shù) primeFactors。你被要求去建構(gòu)出一個正整數(shù) n 其滿足以下條件:
n 的質(zhì)因數(shù)(不一定彼此相異)之?dāng)?shù)量最多為 primeFactors 個、
n 的好因數(shù)之?dāng)?shù)量最大化。注意到 n 個某個因數(shù)如果可以被 n 的所有質(zhì)因數(shù)整除,則其為好因數(shù)。例如說,如果 n = 12,則其質(zhì)因數(shù)有 [2,2,3]。6 和 12 會是好因數(shù),而 3 和 4 則不是。
回傳 n 的好因數(shù)之?dāng)?shù)量。由於該數(shù)字可能會太大,將其模 10 ^ 9 + 7 後再回傳。
注意到一個質(zhì)數(shù)為大於 1 的自然數(shù),其不為任兩個更小的自然數(shù)之乘積。 n 的質(zhì)因數(shù)為一個質(zhì)因數(shù)列表使得其元素乘積等於 n。
限制:
1 ≦ primeFactors ≦ 10 ^ 9
範(fàn)例測資:
範(fàn)例 1:
輸入: primeFactors = 5
輸出: 6
解釋: 200 是 n 的一個合法的數(shù)值。
其有著 5 的質(zhì)因數(shù):[2,2,2,5,5],而其有著 6 個好因數(shù):[10,20,40,50,100,200]。
不存在其他數(shù)字使得 n 有最多 5 個質(zhì)因數(shù)並有著更多的好因數(shù)。
範(fàn)例 2:
輸入: primeFactors = 8
輸出: 18
解題思維:
可以看到每一種好因數(shù)之個數(shù)可以對應(yīng)到 primeFactors 的一個整數(shù)拆分。
例如說範(fàn)例 1 的 primeFactors = 5 被拆成了 3 + 2,其乘積為 3 × 2 = 6。
為何是乘積?因?yàn)槿绻骋环N質(zhì)因數(shù) P 有 C 個。而根據(jù)定義,好因數(shù)「必須」被 P 整除。因此其質(zhì)因數(shù)分解後的結(jié)果可以是 P ^ 1 、 P ^ 2 、 …… 、 P ^ C,總計 C 種。而其他種類的質(zhì)因數(shù)也是同理。因此總計個數(shù)為所有種類質(zhì)因數(shù)各自之個數(shù)之乘積。
所以我們把問題變成了——將 primeFactors 進(jìn)行整數(shù)分拆,並使得分拆後的整數(shù)之乘積最大化。而這其實(shí)就是
這題的內(nèi)容,所以直接照著使用即可。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。