一个人的数论 题解

Solution

令指数为 \(k\)

正常反演得到

\[ \sum_{d\mid n}\mu(d)d^k\sum_{i=1}^{\frac nd}i^k \]

\(f(x)=\sum_{i=1}^xi^k\),它是一个关于 \(x\)\(k+1\) 次多项式

求这个多项式

  1. 可以插值 \(\mathcal O(n^2)\)推荐
  2. 高斯消元(待定系数法)\(\mathcal O(n^3)\)
  3. 直接伯努利数 \(\mathcal O(n^2)\),但是很麻烦

\(f(x)=\sum_{i=0}^{k+1}f_ix^i\)

\[ \sum_{d\mid n}\mu(d)d^kf\left(\dfrac nd\right)\\ =\sum_{d\mid n}\mu(d)d^k\sum_{i=0}^{k+1}f_i\left(\dfrac nd\right)^i\\ =\sum_{i=0}^{k+1}f_i\sum_{d\mid n}\mu(d)d^k\left(\dfrac nd\right)^i\\ =\sum_{i=0}^{k+1}f_in^i\sum_{d\mid n}\mu(d)d^{k-i} \]

右边的 Sigma 有积性,同时注意到只用算 \(\mu(d)\not=0\)\(d\) 即可

也就是对于 \(p_r^{a_r}\),只用算两个数:\(d=1\)\(d=p_r\),对于其他数,可以 \(\mathcal O(1)\)

于是考虑一种种地加入质因子 \(p_i\),维护当前所有数组成的 Sigma,容易维护和计算

posted @ 2024-04-20 23:14  Laijinyi  阅读(19)  评论(0)    收藏  举报