题解 CF1043F Make It One
赛时脑抽了,连简单容斥都不会了。
不合法显然所有数 $\gcd>1$。
容易发现答案 $\le 7$,原因是对于一个数考虑,其最多有 $7$ 个因数,可以成一个最多有 $7$ 个 1 的二进制数,每次与一个新数取 $\gcd$,如果没有减小任何地方的 1,显然这个数是没贡献的,所以最多减小 $7$ 次。
然后考虑求出选 $i$ 个数后 $\gcd =j$ 是否可行,用 $f_j$ 表示 $\gcd = j$ 的方案数。求出 $f_1$ 是否为 $0$ 即可。
这里可以莫反,或者更简单的,因为求出 $j|\gcd$ 的方案数是容易的,用 $g_j$ 表示,显然有 $g_j=\dbinom{cnt_j}{ans},f_i=g_i-\sum\limits_{i|j,i\ne j}f_j$,其中 $cnt_j$ 表示 $a$ 中 $j$ 的倍数个数,从大到小递推即可。因为答案为 $6$ 时不行答案就为 $7$,__int128 刚好开得下 $\dbinom{3\times 10^5}{6}$。

浙公网安备 33010602011771号