题意:求(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)唯一分解然后代回去算就行了。