1.关于卢卡斯组合数求模
首先是预处理逆元,只能预处理到p-1
n=read();int kk=(int)(min(n,(LL)p-1));//!!!!!! jc[0]=1;for(int i=1;i<=kk;i++)jc[i]=jc[i-1]*(LL)i%p; ny[kk]=ksm(jc[kk],(LL)(p-2));for(int i=kk;i;i--)ny[i-1]=ny[i]*(LL)i%p;
其次当C(n,m),n<m时时return 0;因为这意味着阶乘中必然包含着p这个因子,所以是0。//orz szmil
il LL C(LL n,LL m){ if(n<m)return 0;//!!!!! if(n<p)return jc[n]*ny[m]%p*ny[n-m]%p; return C(n%p,m%p)*C(n/(LL)p,m/(LL)p)%p; }
未完待续......