[模板]-卢卡斯(Lucas)定理
2018-03-30 20:48
483 查看
题目描述:
给定n,m,p(1≤n,m,p≤1051≤n,m,p≤105)
求 Cmn+m mod p
保证P为prime
C表示组合数。
一个测试点内包含多组数据。
代码:
给定n,m,p(1≤n,m,p≤1051≤n,m,p≤105)
求 Cmn+m mod p
保证P为prime
C表示组合数。
一个测试点内包含多组数据。
代码:
long long n,m,p,fac[100010]; void fact()//计算1到p的阶乘并对p取模 { fac[0] = 1; for(int i = 1; i <= p; ++i) fac[i] = fac[i - 1] * i % p; } long long QuickPower(long long a,long long n)//快速幂,对p取模 { long long ans = 1; while(n > 0) { if(n & 1) ans = ans * a % p;// mod!!! n /= 2; a = a * a % p;// mod!!! } return ans; } long long C(long long n,long long m)//组合数 { if(m > n) return 0; return fac * QuickPower(fac[m] * fac[n - m],p - 2) % p; } long long Lucas(long long n,long long m)//卢卡斯定理 { if(m == 0) return 1; return (C(n % p,m % p) * Lucas(n / p,m / p)) % p;//递归 } int main() { int _; cin >> _; while(_--) { scanf("%lld%lld%lld",&n,&m,&p); fact();//位置 printf("%lld\n",Lucas(n + m,m)); } return 0; }
相关文章推荐
- 洛谷.3807.[模板]卢卡斯定理(Lucas)
- HDU3037Saving Beans 【组合数取模,即,LUCAS定理模板】
- 数论——Lucas定理模板
- HDU3037——Saving Beans(数论,组合数取模,lucas定理模板)
- Lucas定理模板【bzoj2982】【combination】
- 教你一波Lucas(卢卡斯)定理在数论解题中的应用
- 洛谷P3807 【模板】卢卡斯定理exgcd
- bzoj4403 lucas定理模板
- [Luogu 3807]【模板】卢卡斯定理
- fzu 2020 Lucas 定理,组合数求模模板
- LightOJ - 1067 lucas定理 模板
- 大组合数取模之lucas定理模板,1<=n<=m<=1e9,1<p<=1e6,p必须为素数 复制代码
- Lucas定理模板【bzoj2982】【combination】
- 【数论】Lucas定理推导过程+模板
- 大组合数取模之lucas定理模板,1<=n<=m<=1e9,1<p<=1e6,p必须为素数
- 洛谷—— P3807 【模板】卢卡斯定理
- [数学] Lucas定理模板
- hdu 3037 Lucas定理模板
- HDU3037Saving Beans(lucas定理模板)
- lucas定理模板