CodeVS1631 组合数
2016-10-28 16:56
120 查看
题
点击传送题解
卢卡斯定理模板题卢卡斯定理组合数计算公式:
Cmn%p=Cm%pn%pCm/pn/p
当n和m小于p时,直接O(p)求出,递归计算即可
代码
//卢卡斯定理 #include <cstdio> #define ll long long #define p 100003 using namespace std; ll N, M, fac[p+100]; ll init() { ll i; scanf("%lld%lld",&N,&M); fac[0]=1; for(i=1;i<p;i++)fac[i]=fac[i-1]*i%p; } void exgcd(ll a, ll b, ll &x, ll &y) { ll xx, yy; if(!b){x=1,y=0;return;} exgcd(b,a%b,xx,yy); x=yy;y=xx-a/b*yy; } ll inv(ll a) { ll x, y; exgcd(a,p,x,y); return (x+p)%p; } ll C(ll n, ll m) {return m>n?0:fac *inv(fac[m]*fac[n-m]%p)%p;} ll lacus(ll n, ll m) {return m?C(n%p,m%p)*lacus(n/p,m/p):1;} int main() { init(); printf("%lld\n",lacus(N,M)); return 0; }
相关文章推荐
- codevs 1631组合数 乘法逆元求组合数
- Codevs 3322 时空跳跃者的困境(组合数 二项式定理)
- codevs 1994 排队 排列组合+高精度
- 组合数(codevs 1631)
- codevs 4064 组合 x
- [codevs1262] 不要把球传我 数论+组合数学
- Codevs 2505 上学路线 (组合数学)
- codevs 最小乘车费用 1417
- iOS User Interfaces: Storyboards vs. NIBs vs. Custom Code
- Noip 2013 codevs 3286 火柴排队
- codevs 高精度减法 3115
- CODE【VS】2849 素数判定 3(米勒拉宾素数测试的方法)
- CODEVS 1017乘积最大
- CODE[VS] 天梯 1205 单词翻转
- code vs 1287 矩阵乘法
- codevs 3290 华容道
- Codevs 1159最大全0子矩阵
- Codevs 1038 一元三次方程求解 NOIP 2001(导数 牛顿迭代)
- 【基础练习】【并查集】codevs2796 最小完全图题解
- CODE[vs] 天梯 1501 二叉树最大宽度和高度