乱七八糟的小tips!!!

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;
View Code

其次当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;
}
View Code

未完待续......

posted @ 2018-11-04 13:36  Jessiejzy  阅读(104)  评论(0编辑  收藏  举报