题目链接
Leetcode.2862 完全子集的最大元素和
rating : 2292
题目描述
给你一个下标从 1 1 1 开始、由 n n n 个整数组成的数组。你需要从 n u m s nums nums 选择一个 完全集,其中每对元素下标的乘积都是一个 完全平方数,例如选择 a i a_i ai 和 a j a_j aj , i ∗ j i * j i∗j 一定是完全平方数。
返回 完全子集 所能取到的 最大元素和 。
示例1:
输入:nums = [8,7,3,5,7,2,4,9]
输出:16
解释:
我们选择下标为 2 和 8 的元素,并且 1 * 4 是一个完全平方数。
示例2:
输入:nums = [8,10,3,8,1,13,7,9,4]
输出:20
解释:
我们选择下标为 1, 4, 9 的元素。1 * 4, 1 * 9, 4 * 9 是完全平方数。
提示:
- 1 ≤ n = n u m s . l e n g t h ≤ 1 0 4 1 \leq n = nums.length \leq 10^4 1≤n=nums.length≤104
- 1 ≤ n u m s [ i ] ≤ 1 0 9 1 \leq nums[i] \leq 10^9 1≤nums[i]≤109
解法:质因数分解 + 数学
如果 i ∗ j i * j i∗j 是一个 完全平方数,那么 i f i × j f j \frac{i}{f_i} \times \frac{j}{f_j} fi