1. 程式人生 > >亂七八糟的小tips!!!

亂七八糟的小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

未完待續......