Skip to content

Commit 4697dfe

Browse files
committed
fix solution 2183
1 parent 14f73a9 commit 4697dfe

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

website/content/ChapterFour/2100~2199/2183.Count-Array-Pairs-Divisible-by-K.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ Explanation: There does not exist any pair of indices whose corresponding produc
4444

4545
## 解题思路
4646

47-
- 先找出 num 中每个元素与 k 的最大公约数。并统计这些公约数出现的频次,将数据保存在 map 中。在计算过程中,循环可以只需算到 ${O(\sqrt {k})}$ , 因为每一个 gcd[i] 一定是 k 的因数,而它出现的频次不会超过 ${O(\sqrt {k})}$。简单证明一下:假设因子 v 和 k/v 这两个因数为 k 的因子。v 和 k/v 必至少有 1 个小于等于 $\sqrt {k}$。所以 k 的因子也不会超过 2 * $\sqrt {k}$ = ${O(\sqrt {k})}$ 个。
48-
- 算出上述的 map 以后,2 层循环暴力遍历 key 值,如果 a * b 能被 k 整除,并且 a 和 b 不相同,那么 a 和 b 对应的 value 值相乘即为满足条件的下标对数;如果 a 和 b 相同,那么下标对数为 $C_{n}^{2}$。最后累加结果即可。
47+
- 先找出 num 中每个元素与 k 的最大公约数。并统计这些公约数出现的频次,将数据保存在 map 中。在计算过程中,循环可以只需算到 {{< katex >}}{O(\sqrt {k})}{{< /katex >}} , 因为每一个 gcd[i] 一定是 k 的因数,而它出现的频次不会超过 {{< katex >}}{O(\sqrt {k})}{{< /katex >}}。简单证明一下:假设因子 v 和 k/v 这两个因数为 k 的因子。v 和 k/v 必至少有 1 个小于等于 {{< katex >}}\sqrt {k}{{< /katex >}}。所以 k 的因子也不会超过 2 * {{< katex >}}\sqrt {k}{{< /katex >}} = {{< katex >}}{O(\sqrt {k})}{{< /katex >}} 个。
48+
- 算出上述的 map 以后,2 层循环暴力遍历 key 值,如果 a * b 能被 k 整除,并且 a 和 b 不相同,那么 a 和 b 对应的 value 值相乘即为满足条件的下标对数;如果 a 和 b 相同,那么下标对数为 {{< katex >}}C_{n}^{2}{{< /katex >}}。最后累加结果即可。
4949

5050
## 代码
5151

0 commit comments

Comments
 (0)