CF1627D Not Adding

题目描述

给定一个由 $n$ 个互不相同的整数构成的数组 $a_1, a_2, \dots, a_n$。你可以对其进行如下操作: - 从数组中选择两个元素 $a_i$ 和 $a_j$($i \ne j$),如果 $\gcd(a_i, a_j)$ 不在数组中,则将 $\gcd(a_i, a_j)$ 添加到数组末尾。这里 $\gcd(x, y)$ 表示整数 $x$ 和 $y$ 的最大公约数。 注意,每次操作后数组都会发生变化,后续操作均在新数组上进行。 你最多可以对该数组进行多少次上述操作?

输入格式

第一行包含一个整数 $n$($2 \le n \le 10^6$)。 第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \leq a_i \leq 10^6$)。所有 $a_i$ 互不相同。

输出格式

输出一个整数,表示最多可以对给定数组进行多少次操作。

说明/提示

在第一个样例中,一种进行最多操作的方法如下: - 选择 $i = 1, j = 5$,将 $\gcd(a_1, a_5) = \gcd(4, 30) = 2$ 添加到数组中。 - 选择 $i = 2, j = 4$,将 $\gcd(a_2, a_4) = \gcd(20, 25) = 5$ 添加到数组中。 - 选择 $i = 2, j = 5$,将 $\gcd(a_2, a_5) = \gcd(20, 30) = 10$ 添加到数组中。 可以证明,原数组最多只能进行 $3$ 次操作。 在第二个样例中,可以依次添加 $3$,然后 $1$,再是 $5$,最后是 $2$。 由 ChatGPT 4.1 翻译