zoukankan      html  css  js  c++  java
  • Lucas 定理

    View Code
    /*==================================================*\
    | 求解 C(n,m)%p  保证p为素数n很大10^9 m很小10^5
    \*==================================================*/
    typedef __int64 int64;
    int64 N,M, mod;
    int64 p[MM];
    
    void get_data() {
        int i,j,k;
        scanf("%I64d%I64d%I64d",&N,&M,&mod);
    }
    int64 exp_mod(int64 a,int64 b,int64 p) {
        int64 res=1;
        while(b) {
            if(b&1) {
                res=(res*a)%p;
            }
            b>>=1;
            a=(a*a)%p;
        }
        return res;
    }
    int64 com(int64 n,int64 m,int64 p) {
        int64 a=1,b,i;
        if(n<m) return 0;
        for(i=1;i<=m;i++) {
            a=(a*(n-i+1))%p;
            b=exp_mod(i,p-2,p);
            a=(a*b)%p;
        }
        return a;
    }
    
    int64 Lucas(int64 n,int64 m,int64 p) {
        int64 res=1;
        if(n<m) return 0;
        while(n && m) {
            res=(res*com(n%p,m%p,p))%p;
            n/=p, m/=p;
        }
        return res;
    }
    
    //100 100 2
    void solve() {
        int i,j,k;
        printf("%I64d\n",Lucas(N,M,mod));
    }
    int main() {
        int ca; scanf("%d",&ca);
        while(ca--) get_data(),solve();
        return 0;
    }
  • 相关阅读:
    Eclipse 的单步调试
    CALayer快速入门
    UITableView快速入门
    iOS程序启动原理
    iOS触摸事件
    UITableViewCell重用和性能优化
    Autolayout
    iOS适配
    NSTimer
    UIScrollView
  • 原文地址:https://www.cnblogs.com/zhang1107/p/3039738.html
Copyright © 2011-2022 走看看