单位根反演学习笔记
诺,就是这个式子:
[[kmid n]=frac{1}{k}sum_{i=0}^{k-1}omega_k^{in}
]
其中 (omega_k) 是 (k) 次单位根。
证明:当 (kmid n) 时, (omega_k^n=1) ,(frac{1}{k}sum_{i=0}^{k-1}1=1) ;当 (k
otmid n) 时,根据等比数列求和, (frac{1}{k}sum_{i=0}^{k-1}(omega_k^n)^i=frac{1}{k}(1-omega_k^{nk})/(1-omega_k)) ,其中 (omega_k^{nk}=1) ,所以得到的结果就是 (0) 。
好的,学完了。
哦对了,还有一个式子(令 (F(x)=sum_{i=0}f_ix^i) ):
[sum_{i=0}[kmid i]f_i=sum_{i=0}f_ifrac{1}{k}sum_{j=0}^{k-1}omega_k^{ij}\
=frac{1}{k}sum_{j=0}^{k-1}sum_{i=0}f_i(omega_k^j)^i\
=frac{1}{k}sum_{j=0}^{k-1}F(omega_k^j)
]
然后就没有然后了。
哦对了,一些题目比较喜欢考的形式是这样的:
[sum_{i=0}^n{nchoose i}A(x)^i[kmid i]=sum_{i=0}^n{nchoose i}A(x)^ifrac{1}{k}sum_{j=0}^{k-1}omega_k^{ij}\
=frac{1}{k}sum_{j=0}^{k-1}sum_{i=0}^n{nchoose i}(A(x)omega_k^j)^i\
=frac{1}{k}sum_{j=0}^{k-1}(A(x)omega_k^j+1)^n
]
其中的 (A(x)) 不仅仅可以是一个数,或者也可以是一个矩阵等等,当然此时后面加的就不是 (1) 而是单位元了。
感觉这都变成一个套路了,我总感觉我做的题目都是上面这样类似的。
然后就没有然后了。
直接推式子啊啊啊:
[sum_{i=0}^n{nchoose i}s^ia_{imod 4}=sum_{i=0}^{3}a_isum_{j=0}^n{nchoose j}s^j[4mid (j-i)]\
=sum_{i=0}^3a_ifrac{1}{4}sum_{j=0}^3(somega_4^j+1)^n
]
硬算即可,其中 (omega_4=911660635) 。
直接推式子啊啊啊:
[sum_{i=0}^n{nchoose i}p^ilfloorfrac{i}{k}
floor=sum_{i=0}^n{nchoose i}p^isum_{j=1}^i[kmid j]\
=sum_{i=0}^n{nchoose i}p^isum_{j=1}^ifrac{1}{k}sum_{t=0}^{k-1}omega_k^{tj}\
=frac{1}{k}sum_{t=0}^{k-1}sum_{i=0}^n{nchoose i}p^isum_{j=1}^i(omega_k^{t})^j\
=frac{1}{k}(sum_{i=0}^n{nchoose i}p^ii+sum_{t=1}^{k-1}sum_{i=0}^n{nchoose i}p^ifrac{omega_k^t-omega_k^{t(i+1)}}{1-omega_k^t})\
frac{1}{k}(sum_{i=1}^n{n-1choose i-1}np^i+sum_{t=1}^{k-1}frac{omega_k^t}{1-omega_k^t}sum_{i=0}^n{nchoose i}p^i(1-omega_k^{ti}))\
=frac{1}{k}(np(p+1)^{n-1}+sum_{t=1}^{k-1}frac{omega_k^t}{1-omega_k^t}((p+1)^n-(pomega_k^t+1)^n))
]
硬算即可,其中有一步把 (t=0) 的情况拆出来是因为公比为 (1) 的等比数列求和不能用公式算。
BZOJ3328 PYXFIB
众所周知:
[F_i=egin{bmatrix}1& 1end{bmatrix} imes egin{bmatrix}0& 1\ 1& 1 end{bmatrix}^i imes egin{bmatrix}1\ 0end{bmatrix}
]
令这三个矩阵分别为 (A,B,C) ,那么:
[F_i=A imes B^i imes C
]
直接推式子啊啊啊:
[sum_{i=0}^n{nchoose i}F_i[kmid i]=sum_{i=0}^n{nchoose i}F_ifrac{1}{k}sum_{j=0}^{k-1}omega_k^{ij}\
=frac{1}{k}sum_{j=0}^{k-1}A imes(sum_{i=0}^n{nchoose i}B^iomega_k^{ij}) imes C\
=frac{1}{k}sum_{j=0}^{k-1}A imes(Bomega_k^j+I)^n imes C
]
(其中 (I) 是单位矩阵。)
硬算即可。
构造 EGF :
[F(x)=sum_{i=0}[dmid i]frac{x^i}{i!}
]
题目要求的就是:
[[x^n]F(x)^k
]
直接推式子啊啊啊:
[F(x)=sum_{i=0}frac{x^i}{i!}[dmid i]\
=sum_{i=0}frac{x^i}{i!}frac{1}{d}sum_{j=0}^{d-1}omega_d^{ij}\
=frac{1}{d}sum_{j=0}^{d-1}sum_{i=0}frac{(xomega_d^j)^i}{i!}\
=frac{1}{d}sum_{j=0}^{d-1}e^{xomega_d^j}
]
分类讨论啊啊啊:
[F(x)^k=egin{cases}e^{kx}& d=1\ (frac{1}{2}(e^x+e^{-x}))^k=frac{1}{2^k}sum_{i=0}^k{kchoose i}e^{x(2i-k)}& d=2\ (frac{1}{3}(e^{omega_3^0x}+e^{omega_3^1x}+e^{omega_3^2x}))=frac{1}{3^k}sum_{a+b+c=k}{kchoose a,b,c}e^{x(aomega_3^0+bomega_3^1+comega_3^2)} & d=3end{cases}
]
答案分别是:
[k^n
]
[frac{1}{2^k}sum_{i=0}^k{kchoose i}(2i-k)^n
]
[frac{1}{3^k}sum_{i+jle k}{kchoose i,j,k-i-j}(iomega_3^0+jomega_3^1+(k-i-j)omega_3^2)^n
]
硬算即可,其中 (omega_3=-frac{1}{2}+frac{sqrt{3}}{2}i) ,在模 (19491001) 意义下 (i=5731711,sqrt{3}=38991,omega_3=663067) 。
方便起见记 ([x,y]W) 表示矩阵 (W) 第 (x) 行 (y) 列的值。
设题目中给的那个矩阵是 (W) ,那么从 (x) 跳 (m) 步跳到 (y) 的方案数就是 ([x,y]W^m) ,设答案为 (f(1sim k-1)) 然后直接枚举跳的步数推式子啊啊啊:
[f(t)=sum_{m=0}^L[kmid (m-t)][x,y]W^msum_{l=0}^L{l-1choose m-1}\
=sum_{m=0}^L{Lchoose m}[x,y]W^mfrac{1}{k}sum_{s=0}^{k-1}omega_k^{s(m-t)}\
=frac{1}{k}sum_{s=0}^{k-1}omega_k^{-st}sum_{m=0}^L{Lchoose m}[x,y]W^momega_k^{sm}\
=frac{1}{k}sum_{s=0}^{k-1}omega_k^{-st}[x,y](Womega_k^s+I)^L
]
其中 (I) 是单位元,令 (A(i)=f(i) imes k,B(i)=[x,y](Womega_k^i+I)^L) ,那么:
[A(i)=sum_{j=0}^{k-1}omega_k^{-ij}B(j)
]
发现是个长度为 (k) 的循环卷积,然后套 Bluestein’s Algorithm 的板子就可以了:
[A(i)=sum_{j=0}^{k-1}omega_k^{{ichoose 2}+{jchoose 2}-{i+jchoose 2}}B(j)\
=omega_k^{{ichoose 2}}sum_{j=0}^{k-1}omega_k^{-{i+jchoose 2}}B(j)omega_k^{{jchoose 2}}
]
减法卷积即可。
然后还有就是这道题目要写任意模数的 FFT/NTT 。