zoukankan      html  css  js  c++  java
  • 「学习笔记」单位根反演

    单位根反演

    [[n|k]=frac{1}{n}sum_{i=0}^{n-1}omega_{n}^{ik} ]

    证明

    首先根据单位根的性质 (omega_{n}^{kn} = 1) ,所以当 (n |k) 时每一项都等于 (1),有 (frac{1}{n}sum_{i=0}^{n-1} omega_{n}^{ik} = 1)

    (n|k) 不成立时,(omega_{n}^k eq 1) ,等比数列求和得

    [frac{1}{n}sum_{i=0}^{n-1}omega_{n}^{ik}=frac{1}{n} imesfrac{1-omega_{n}^{nk}}{1-omega_{n}^k} ]

    又因为 (omega_{n}^{nk}=1) ,所以上式为 (0) ,得证。

    「集训队作业2018」复读机

    有一个长度为 (n) 的序列,有 (m) 种颜色,要求给这个序列染完色之后,每一种颜色的出现次数都能被 (d) 整除,求合法的染色方案数。

    相当于是集合拼接并去掉集合拼接顺序的影响,直接上 EGF,我们即要求

    [[x^n](sum_{i =0}^n [d|i]frac{x^i}{i!})^m ]

    (d = 1) :

    原式等价于 ([x^n]e^{mx}) ,第 (n) 项的系数就是 (m^n) ,其实这个直接就能得到了,小学生计数。

    (d = 2) :

    这里也不用上单位根反演,直接二项式定理展开就好了,类似与 CTS2019 珍珠其中一步的推法。

    [egin{align} [x^n](sum_{i =0}^n [d|i]frac{x^i}{i!})^m &= [x^n](frac{e^{x}+e^{-x}}{2})^m \ &=[x^n]frac{1}{2^m}sum_{i=0}^m {m choose i}e^{(2i-m)x} \ &=frac{1}{2^m}sum_{i=0}^m {m choose i}(2i-m)^n end{align} ]

    (d = 3) :

    前面为什么不上单位根反演是有深层次道理的

    [egin{align} [x^n](sum_{i =0}^n [d|i]frac{x^i}{i!})^m &= [x^n](sum_{i=0}^n(frac{1}{d}sum_{j=0}^{d-1}omega_{d}^{ij})frac{x^i}{i!})^m \ &= [x^n]frac{1}{d^m}(sum_{j=0}^{d-1}sum_{i=0}^nfrac{(xomega_d^j)^i}{i!})^m \ &= [x^n]frac{1}{d^m}(sum_{j=0}^{d-1}e^{xomega_{d}^j})^m \ &=frac{1}{3^m}sum_{i+j+k=m}frac{m!}{i!j!k!}[x^n](e^{ixomega_{d}^0+jxomega_{d}^1+kxomega_{d}^2}) \ &=frac{1}{3^m}sum_{i+j+k=m}frac{m!}{i!j!k!}(iomega_{d}^0+jomega_{d}^1+komega_{d}^2)^n end{align} ]

    这里单位根反演复杂度是 (mathcal O(k^{d-1}))

    #Loj6485 LJJ 学二项式定理

    [[sum_{i=0}^n{nchoose i} imes s^i imes a_{imod4}] mod 998244353 ]

    直接上单位根反演就好啦,一遍推一遍过~

    [egin{align} &= sum_{k=0}^3a_ksum_{i=0}^n[4|(i-k)]{n choose i}s^i \ &=frac{1}{4}sum_{k=0}^3 a_ksum_{i=0}^nsum_{j=0}^3 {nchoose i}omega_{4}^{(i-k)j}s^i \ &=frac{1}{4}sum_{k=0}^3 a_ksum_{j=0}^3 frac{1}{omega_{4}^{jk}}sum_{i=0}^n{nchoose i}omega_{4}^{ij}s^i \ &=frac{1}{4}sum_{k=0}^3 a_ksum_{j=0}^3 frac{1}{omega_{4}^{jk}}sum_{i=0}^n{nchoose n-i}omega_{4}^{ij}s^i \ &=frac{1}{4}sum_{k=0}^3 a_ksum_{j=0}^3 frac{(1+omega_{4}^{j}s)^n}{omega_{4}^{jk}} end{align} ]

    复杂度 (mathcal O(log n))

  • 相关阅读:
    C++模板元编程(二)
    C++模板元编程(一)
    interpret_cast
    Bresenham算法
    Windows中编译Lua源码
    MathJax基础教程与快速参考
    散列表
    Bash脚本实例
    Bash基础
    【iOS】重读《精通Objective-C》(一)
  • 原文地址:https://www.cnblogs.com/mangoyang/p/11723825.html
Copyright © 2011-2022 走看看