有生成函数
f(x,y)=0≤i<n∏(1+xiy)
Ans===[ym]imodn=k∑[xi]f(x,y)[ym]n10≤i<n∑f(ωni,y)ωn−ik[ym]n10≤i<n∑(0≤j<n∏1+y×ωnij)ωn−ik单位根反演
定理1:ωni=ω(n,i)n
[object Promise]
推论:ωnkik=ωk(n,i)kn=ω(n,i)n=ωni
Ans===[ym]n10≤i<n∑(0≤j<n∏1+y×ω(n,i)nj)ωn−ik[ym]n10≤i<n∑0≤j<(n,i)n∏1+y×ω(n,i)nj(n,i)ωn−ik[ym]n1d∣n∑0≤j<dn∏1+y×ωdnjd0≤i<n(n,i)=d∑ωn−ik定理1
定理2:0≤i<n∏x+y×ωni=xn−(−y)n
[object Promise]
Ans====[ym]n1d∣n∑(1−(−y)dn)d0≤i<n(n,i)=d∑ωn−ik[ym]n1d∣n∑(1−(−y)d)dn0≤i<n(n,i)=dn∑ωn−ikn1d∣(n,m)∑(−1)dm(dmdn)0≤i<n(n,i)=dn∑ωn−ikn1d∣(n,m)∑(−1)dm(dmdn)0≤i<d(d,i)=1∑ωd−ik定理2二项式定理推论
0≤i<d(d,i)=1∑ωd−ik=====0≤i<d∑ωd−ikx∣(d,i)∑μ(x)x∣d∑μ(x)0≤i<xd∑ωd−ixkx∣d∑μ(x)0≤i<xd∑ωxd−ikx∣d∑μ(x)×xd[xd∣k]x∣(d,k)∑μ(xd)×x推论
Ans=n1d∣(n,m)∑(−1)dm(dmdn)x∣(d,k)∑μ(xd)×x
如果不考虑大组合数的话可以做到
O(σ0(n))
组合数分块打阶乘表即可