首页 > 其他分享 >卢卡斯定理

卢卡斯定理

时间:2023-07-12 20:13:45浏览次数:31  
标签:return int 定理 卢卡斯 ll mod

 卢卡斯定理的原式:C(n,r) mod m=C(n1,r1)*C(n2,r2)*......*C(nk,rk) mod m

卢卡斯定理的变式:C(n,r) mod m=C(n mod m,r mod m)*C(n/m,r/m) mod m

卢卡斯定理的时间复杂度很低,接近O(n)

下面给出一道例题

P3807 【模板】卢卡斯定理/Lucas 定理

代码:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 1e5+39+7;
ll fac[N];
ll quickPow(ll a,ll n,ll m){
	ll ans=1;
	a%=m;
	while(n){
		if(n&1)ans=(ans*a)%m;
		a=(a*a)%m;
		n>>=1;
	}
	return ans;
}
ll inv(ll a,ll m){return quickPow(fac[a],m-2,m);}
ll c(ll n,ll r,ll m){
	if(r>n)return 0;
	return ((fac[n]*inv(r,m))%m*inv(n-r,m)%m);
}
ll Lucas(ll n,ll r,ll m){
	if(r==0)return 1;
	return c(n%m,r%m,m)*Lucas(n/m,r/m,m)%m;
}
int main(){
	int T;cin>>T;
	while(T--){
		ll a,b,m;cin>>a>>b>>m;
		fac[0]=1;
		for(int i=1;i<=m;i++)fac[i]=(fac[i-1]*i)%m;
		cout<<Lucas(a+b,a,m)<<'\n';
	}
	return 0;
}

  

 

标签:return,int,定理,卢卡斯,ll,mod
From: https://www.cnblogs.com/zhanghx-blogs/p/17548688.html

相关文章

  • P4139(扩展欧拉定理的应用)
    欧拉定理及扩展题意:求思路:运用扩展欧拉定理进行欧拉降幂:然后递归求解即可。AC代码://-----------------//#pragmaGCCoptimize(2)#include<iostream>#include<cstring>#include<algorithm>#defineIOSios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(0)......
  • 二项式定理和杨辉三角
     杨辉三角解法1:dfs使用记忆化搜索,提升dfs效率代码:intdfs(intn,intm){ if(!m)returnc[n][m]=1; if(m==1)returnc[n][m]=n; if(c[n][m])returnc[n][m]; if(n-m<m)m=n-m; returnc[n][m]=(dfs(n-1,m)+dfs(n-1,m-1))%mod;}解法2:递推时间复杂度O(n^2),如果......
  • 【模板】唯一分解定理
    问题描述任何大于\(1\)的正整数都能唯一分解为有限个质数的乘积:          \(N=p_1^{c_1}p_2^{c_2}...p_k^{c_k}\)其中\(p_1,p_2,\dots,p_k\)从小到大排列输入数据      一个数\(n(n\le10^{17})\)输出数据      将其质因数与其次数顺序输出   ......
  • 立体几何八大定理
    线面平行判定定理:平面外一条直线与平面内一条直线平行,则这条直线和这个平面平行。符号语言:\[a\not\subset\alpha,b\subset\alpha,a/\kern-0.10em/b\Longrightarrowa/\kern-0.10em/\alpha\]性质定理:一条直线和平面平行,经过这条直线的平面这这个平面相交,那么这条直线和交......
  • 【补】托勒密定理
    托勒密定理定理内容在数学中,托勒密定理是欧几里得几何学中的一个关于四边形的定理。托勒密定理指出凸四边形两组对边乘积之和不小于两条对角线的乘积,等号当且仅当四边形为圆内接四边形,或退化为直线取得(这时也称为欧拉定理)。狭义的托勒密定理也可以叙述为:圆内接凸四边形两对对边......
  • Lucas 定理
    Lucas定理若\(p\)是质数,则对于任意整数\(1\leqm\leqn\),有:\[\dbinom{n}{m}\equiv\dbinom{n\modp}{m\modp}\times\dbinom{\dfrac{m}{p}}{\dfrac{n}{p}}\pmodp\]证明太难,略。例题\(1\):SP18878题目大意求杨辉三角第\(n\)行中偶数个数与奇数个数。题目分析我们......
  • 威尔逊定理
     威尔逊定理:若p为素数,则p可以整除(p-1)!+1例题1:hdu5391直接套用威尔逊定理,注意n=4的结果是2代码:#include<bits/stdc++.h>#definelllonglongusingnamespacestd;constintN=1e9+39+7;llquickPow(lla,llb,llm){ llans=1; while(b){ if(b&1)ans=(ans*a)%m......
  • Arrangement排列•Combination组合•Counting计数•Binomial Theorem二项式定理
    符号C-Combination组合数[1]A-Arrangement(旧教材为P-Permutation)N-Number元素的总个数(自然数集合).M-参与选择的元素个数(M不大于N,两者都是自然数集合).!-Factorial阶乘.Arrangement排列与Combination组合:注意:n,m都是自然数,且m<=n,下同.排列的定义:从n......
  • 一个简单棋盘覆盖定理的证明
    能够用\(1\timesl\)的矩形覆盖\(n\timesm\)棋盘的充要条件是\(l\midn\lorl\midm\)。充分性显然,考虑证明必要性。为了方便,我们将行和列记为\(0\simn-1\)和\(0\simm-1\)。考虑设\((i,j)\)的权值为\(\omega_{l}^{i+j}\),一个\(1\timesl\)的矩形覆盖的区域显然......
  • 欧拉定理
    欧拉定理定理内容对于两个互质的整数a,n有\(a^{\varphi(n)}\equiv1(mod\enspacen)\)这里的\(\varphi(n)\)指的是欧拉函数。-数学证明由\(\varphi(n)\)可知从1到n与n互质的有\(m_1,m_2,m_3\dotsm_{\varphi(n)}\)。全部乘以a得\(am_1,am_2,am_3\dotsam_{\varphi(n)}\),由起......