• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

02xd

  • 博客园
  • 联系
  • 管理

公告

View Post

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)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3