题解 JZPKIL

题意:求(sum_{i=1}^n gcd(i,n)^x lcm(i,n)^y)

(lcm)不好搞把它拆开,令(gcd(i,n)=d)转化为下式:

(n^y sum_{i=1}^n d^{x-y} i^y)

那么(n^y)就是常数可以暂时不管,考虑枚举(d)转化为下式:

(sum_{d|n} d^x sum_{i=1}^{frac{n}{d}} i^y [gcd(i,frac{n}{d})==1])

令(frac{n}{d}=m),一步反演得到:

(sum_{d|n}d^x sum_{i=1}^m i^y sum_{k|gcd(i,m)}mu (k))

交换枚举顺序得到:

(sum_{d|n}d^x sum_{k|m} mu (k) sum_{k|i}^m i^y)

然后把(k)提出:

(sum_{d|n}d^x sum_{k|m} mu(k) k^y sum_{i=1}^{lfloor frac{m}{d} floor} i^y)

前面提式子都把(n^y)暂时忽略掉了,现在加上,于是最终的答案式子为:

(color{red}{n^y sum_{d|n}d^x sum_{k|m} mu(k) k^y sum_{i=1}^{frac{m}{d}} i^y})

首先自然数的(k)次幂和是(k+1)次多项式,而多项式的每一项都是积性函数,所以答案式子可以看成积性函数的卷积。然后考虑怎么处理(sum a^b),斯特林数,拉格朗日插值,伯努利数均可。讲一下伯努利数的方法。

伯努利数公式是这样的((B_i)表示第(i)个伯努利数):

(sum_{i=1}^n i^k =frac{1}{k+1} sum_{j=0}^k BjC_{k+1}^j n^{k-j+1})

然后我们把前面的提出来看成多项式系数,假设系数为(a_i),于是答案式子可以进一步化成:

(color{red}{n^y sum_{d|n}d^x sum_{k|m} mu(k) k^y sum_{i=0}^{y}a_i (frac{m}{d})^{y-i+1}})

由于这是积性函数可以把(n)唯一分解然后对于每个质因子进行计算,由莫比乌斯函数的性质易得知只有(k=1,k=p_i)的时候式子才不为(0),其中(p_i)表示(n)的第(i)个质因子,把(n)唯一分解然后代回去算就行了。

原文地址:https://www.cnblogs.com/Kylin-xy/p/tijie-JZPKIL.html