数据范围过大的计数?
生成函数!
无穷项?转化成封闭形式
分母乘积再求逆
次数过大不能分治NTT?
分母乘积?
求Ln变成求和!
Ln?
有结论:
Ln=
upda:2019.4.19:
证明:
1.Taylor展开
在x0=1的地方展开
2.
求导把ln里面的f(x)拿出来
(图片来源:在Ta的博客查看)
就可以开桶,然后mlogm处理系数之和
求exp再求逆
int main(){
int n,m;
Poly f;
rd(n);rd(m);
f.resize(m+1);
ni[1]=1;
for(reg i=2;i<=m;++i) {
ni[i]=(ll)(mod-mod/i)*ni[mod%i]%mod;
}
int v;
for(reg i=1;i<=n;++i){
rd(v);++buc[v];
}
for(reg i=1;i<=m;++i){
if(buc[i]){
for(reg j=i;j<=m;j+=i){
f[j]=ad(f[j],mul(mod-mul(i,ni[j]),buc[i]));
}
}
}
// f.out();
f=Exp(f);
f=~f;
for(reg i=1;i<=m;++i){
printf("%d
",f[i]);
}
return 0;
}
求Ln把乘法变成加法的tirck