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

  • 相关阅读:
    Maven相关知识片
    fastjson使用
    Block pool ID needed, but service not yet registered with NN java.lang.Exception: trace 异常解决
    JVM之内存结构详解
    ContextCleaner ——Spark 应用程序的垃圾回收器
    重新认识Java 8的HashMap
    HDFS NameNode内存全景
    HDFS的NameNode与SecondaryNameNode的工作原理
    大数据——基础知识
    HDFS数据定期清理
  • 原文地址:https://www.cnblogs.com/Kylin-xy/p/tijie-JZPKIL.html
Copyright © 2020-2023  润新知