9619
9619. 乘积,欧拉函数,求和
首先观察公式,我们发现数 \(a\) 的贡献只由他本身和他 有的 质因子决定,因此一个 \(a\) 的集合的贡献除了组成集合的几个元素本身外就是他们质因子的并。注意到 \(a\) 的集合不好枚举,但它的质因子少得多,因此考虑将 \(a\) 的贡献记到包含它质因子集合的所有集合上,设 \(f_{i}\) 表示质因子集合并为 \(i\) 的 所有 \(a\) 的集合 的总贡献,\(p_j\) 表示 $ a_j$ 的质因子集合。枚举 \(i\) 和数 \(j\),\(f_j\times a_i \to f_{j~\cup ~p_i}\)(加法),答案为 \(\sum f_i\)
但质因子虽少,也远远大于能状压表示的级别。
注意到 \(\sqrt{a}\) 范围内的质因子只有 \(16\) 个左右,且 \(a\) 中 \(>\sqrt{a}\) (记为 \(m\) )的因子只有一个,所以可以把这个\(m\) 单独拉出来计算贡献,剩下的状压进一个 \(2^{16}\) 的 \(f\) 数组里 \(dp\) 就可以了,我统计的方法是将数 \(a\) 的质因子状态和它本身写成一个 \(pair\) 推入下标为 \(m\) 的数组,统计时先把 \(a\) 自己的贡献统完,再统因子 \(m\) 的贡献就行。
posted on 2025-10-31 15:11 final_story 阅读(2) 评论(0) 收藏 举报
浙公网安备 33010602011771号