Lucas定理(C(n,m)mod p)
来源:互联网 发布:数据结构与算法的关系 编辑:程序博客网 时间:2024/05/23 07:23
Lucas定理
卢卡斯定理及证明:
表达式也可以表示为:Lucas(n,m,p)=C(n%p,m%p)* Lucas(n/p,m/p,p)
简单的说,Lucas定理是用来求C(n,m) mod p的值(p是素数)。
#include <cstdio>#include <iostream>using namespace std;#define MAX 150000long long fac[MAX];//阶乘:fac[i]=i!void Factorial(long long p){ fac[0]=1; for(int i=1;i<=p;i++) fac[i]=fac[i-1]*i%p;}//快速幂:(a^b)%plong long Pow(long long a,long long b,long long p){ long long c=a%p,s=1; while(b) { if(b&1) s=s*c%p; c=c*c%p; b>>=1; } return s;}//组合:C(n,m)%plong long C(long long n,long long m,long long p){ if(n<m) return 0; return fac[n]*Pow(fac[m]*fac[n-m],p-2,p)%p;}//Lucas定理:Lucas(n,m,p)=C(n%p,m%p)*Lucas(n/p,m/p,p)(其中Lucas(n,0,p)=1)long long Lucas(long long n,long long m,long long p){ if(m==0) return 1; return C(n%p,m%p,p)*Lucas(n/p,m/p,p)%p;}int main(){ long long n,m,p,t; scanf("%I64d",&t); while(t--) { scanf("%I64d%I64d%I64d",&n,&m,&p); Factorial(p); printf("%I64d\n",Lucas(n,m,p)); } return 0;}
0 0
- Lucas定理(C(n,m)mod p)
- c(n,m) mod p 1 Lucas 定理
- 拓展Lucas定理求C(n, m) % p
- 【Lucas定理 && C(n, m)%p && 逆元】FZU
- 求C(n,m)%mod
- C(n,m) mod p 2 暴力分解
- 求C(n,m)%mod的方法总结(未更完)
- 1008 N的阶乘 mod P ——51Nod(同余定理)
- HDU 4349 Xiao Ming's Hope(Lucas定理、C[n][m]为奇数的个数)
- sdut 3895/第八届省赛C题 fireworks 杨辉三角 逆元求C(n,m)%mod
- 输入N和P(P为质数),求N! Mod P = ? (Mod 就是求模 %)
- N! mod P(N-1e9,P-2e9,P为质数)
- 大组合数取模之lucas定理模板,1<=n<=m<=1e9,1<p<=1e6,p必须为素数 复制代码
- HDU3037(Lucas定理)
- lucas定理(hdu3037,)
- 卢卡斯定理(Lucas)
- lucas (数论定理)
- hdu6129-( Lucas定理)
- POJ 1228 稳定凸包问题
- Centos6.5 hadoop新增datanode
- 算法导论 10.2-6 带哨兵的双向链表合并两个不相交的集合
- startActivityForResult与startActivity
- 华为OJ(尼科彻斯定理)
- Lucas定理(C(n,m)mod p)
- Python初学教程
- Android-使用ListView把SQLite中的数据显示至屏幕
- LeetCode 题解(173): Pow(x, n)
- 异常
- iOS面试题1
- asp.net网站图表制作
- PAT 1035. Password (20)
- Android Alarm自上而下 调试浅析