链接: https://leetcode-cn.com/problems/count-array-pairs-divisible-by-k/
题意
给你一个下标从 0 开始、长度为 n 的整数数组 nums 和一个整数 k ,返回满足数组中两数相乘等于k的下标对的数目
解法
周赛第四题,有思路但没写出来
之前想到了质因数分解,然后计算每个数包含多少质因数
然后想用dp来解,发现质因数的个数数量以及状态表示都写不出来
正解是对每个因子考虑建立factor数组
假设每次计算a和k的最大公约数g,只需要知道前面有多少个数可以被k/g整除就可以得到当前数可形成的下标对数量
预处理k的所有因子(不需要质因子)
每次处理数组中的一个数a时,遍历所有k的因子,如果可以整除a,就把因子对应的值加一
代码
1 | class Solution { |