zoukankan      html  css  js  c++  java
  • 浅谈卢卡斯定理(非扩展)

    对于组合数,往往要用到阶乘,但是阶乘的数据极其之大,所以要用取模的办法防止数据溢出。

    而卢卡斯定理在这个时候就有很大的用处了,来看百度百科上的简介。

    代码如下 Luogu P3807

    #include<bits/stdc++.h>
    using namespace std;
    int T; 
    int n,m,p;
    long long ksm(long long a,long long b,long long p){
        long long base=1;
        while(b){
            if(b&1) base=base*a%p;
            a=a*a%p;
            b>>=1;
        }
        return base;
    }
    long long C(long long n,long long m){
        if(m>n) return 0;
        long long a=1,b=1;
        for(long long i=n-m+1;i<=n;i++){
            a=a*i%p;
        }
        for(long long i=1;i<=m;i++){
            b=b*i%p;
        }
        return a*ksm(b,p-2,p)%p;
    }
    long long Lucas(long long n,long long m){
        if(!m) return 1;
        else return (C(n%p,m%p)*Lucas(n/p,m/p))%p;
    }
    int main(){
        scanf("%d",&T);
        for(int i=1;i<=T;i++){
            scanf("%d%d%d",&n,&m,&p);
            printf("%lld
    ",Lucas(n+m,m));
        }
        return 0;
    }
  • 相关阅读:
    跨域 CORS 详解 (转)
    手机自动化(一)
    Appium Desktop-Permission to start activity denied.
    webview元素定位
    电商网站测试点 还需要整理
    性能测试第三天
    性能测试第二天
    DDD
    ATDD
    BDD
  • 原文地址:https://www.cnblogs.com/LJB666/p/11009631.html
Copyright © 2011-2022 走看看