首页 > 其他分享 >【模板】Lucas定理

【模板】Lucas定理

时间:2023-04-15 15:33:48浏览次数:30  
标签:return Lucas int res 定理 x% 模板 jc

若 \(p\) 为质数,则对于任意整数 \(1\le m \le n\),有:

\(C_n^m \equiv C_{n \div p}^{m \div p} \times C_{n\mod p}^{m\mod p} (mod~p)\)

也就是把 \(n\) 和 \(m\) 表示成 \(p\) 进制数,并且对 \(p\) 进制数下的每一位分别计算组合数,累乘起来。


CODE

inline int power(int x,int y,int p){
    int res=1;
    while(y){
        if(y&1) res=res*x%p; 
        x=x*x%p; 
        y>>=1;
    }
    return res%p;
}
inline int C(int x,int y,int p){
	if(y>x) return 0;
	return jc[x]*power(jc[y]*jc[x-y]%p,p-2,p)%p;//乘上逆元
}
inline int Lucas(int x,int y,int p){
    if(!y) return 1;
    return C(x%p,y%p,p)*Lucas(x/p,y/p,p)%p;
}

标签:return,Lucas,int,res,定理,x%,模板,jc
From: https://www.cnblogs.com/GOD-HJ/p/17321224.html

相关文章

  • 【模板】高斯消元
    CODE#include<bits/stdc++.h>usingnamespacestd;constdoubleeps=1e-10;doubleuu,a[52][52],b[52];intn,l[52];boolpd;inlinevoidzzd(int&maxx,inti,intcnt){ for(intj=cnt+1;j<=n;++j){//找系数最大值 if(fabs(a[j][i])>fabs(a[maxx][i])) ......
  • Splay树【模板】
    Splay树模板P3369[模板]普通平衡树#include<bits/stdc++.h>usingnamespacestd;#definels(x)tr[x].s[0]#definers(x)tr[x].s[1]constintmaxn=1e5+10;//nodestructnode{ints[2],val,cnt,siz,fa;//左右儿子,value,出现的次数,子树大小,父节点编号voidinit......
  • 平衡树模板——splay
    /*在splay中0不能算作是根节点,只能说是一个标记点如果谁的父亲是0,那么谁就是根节点*/#include<bits/stdc++.h>usingnamespacestd;constintM=1e5+5;constintinf=1e9;#definettr#definesizesizintcnt=0,root=0;structsplay{intch[2],siz,cnt,va......
  • 模板元编程与函数式
    参考:【公开课】现代C++进阶:模板元编程与函数式ppt和代码在高性能计算中,一般使用函数式和元编程,而不使用面向对象。简单的介绍:类型自动推导模板参数、模板特化简单的实例:#include<iostream>template<classT>Ttwice(Tt){returnt*2;}std::stringtwice(std::......
  • vue2源码-五、将模板编译解析成AST语法树1
    将模板编译成ast语法树complileToFunction方法vue数据渲染:template模板->ast语法树->render函数,模板编译的最终结果结果就是render函数。在complileToFunction方法中,生成render函数,需要以下两个核心步骤:通过parserHTML方法:将模板(template或html)内容编译成ast语法树通过co......
  • 算法基础模板整理(动态规划篇)
    背包问题01背包问题static const int N = 1010;int dp[N][N], v[N], w[N], n, c;int main(){    cin >> n >> c;    for(int i = 1; i <= n; i ++ ) cin >> v[i] >> w[i];    for(int i = 1; i <= n; i ++ )    ......
  • 算法基础模板整理(基础图论篇)
    拓扑排序bool topo(){    queue<int> q;    for(int u = 1; u <= n; u ++ )        if(!ind[u]) q.push(u);        int cnt = 0;    while(!q.empty()){        int u = q.front();        q.pop(); ......
  • 算法基础模板整理(高阶数据结构篇)
    树状数组动态区间和询问+点修改int lowbit(int x){    return x & -x;}void add(int x, int v){    for(int i = x; i <= n; i += lowbit(i)) tree[i] += v;}int query(int x){    int res = 0;    for(int i = x; i......
  • 【D02】Bootstrap免费精选模板推荐,附上Django中使用模板教程
    前端模板-AnchorUIKIT前言今天介绍一款制作精良、开源、免费的Bootstrap模板——AnchorUIKIT该模板使用的是Bootstrapv4版本本文将介绍如何在Django中导入该模板的静态资源包并使用介绍官方文档Anchor-afreeBootstrapUIKit(bootcss.com)预览官方文档......
  • CAD模板怎么设置?CAD模板设置技巧
    在CAD制图过程中,如果需要设置一个模板的话该如何操作呢?CAD模板怎么设置?本节CAD制图教程就和小编一起来了解一下浩辰CAD软件中设置CAD模板的相关操作技巧吧!CAD模板设置步骤:步骤一:启动浩辰CAD后,打开或者是新建一个可以作为模板的图形文件。步骤二:点击软件左上角的【G】图标,在下拉......