lucas定理快速求解组合数(适用于MOD较小)
lucus求解组合数的时间复杂度为
O(MODlogn(MOD))
适用于MOD较小但n较大的情况
模板:

LL MOD=1e6+3; LL QuickExp(LL base,LL exp) { LL res=1; while(exp) { if(exp&1) { res*=base; res%=MOD; } base*=base; base%=MOD; exp>>=1; } return res; } LL C(LL n,LL k) { if(n<k) return 0; LL up=1,down=1; for(int i=1;i<=n-k;i++) { down=down*i%MOD; up=up*(n-i+1)%MOD; } return up*QuickExp(down,MOD-2)%MOD; } LL Lucas(LL a,LL b) { if(a<MOD&&b<MOD) return C(a,b); else return Lucas(a/MOD,b/MOD)*C(a%MOD,b%MOD)%MOD; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人