zoukankan      html  css  js  c++  java
  • bzoj 2982 combination

    LINK:combination

    combination 是组合 联合的意思 引申义为组合数.

    题意:n个人每天晚上选m个人 这m个人不能有重复 问有多少种方案。

    显然不考虑顺序 那么答案为C(n,m).直接上卢卡斯定理即可。

    主要是练习一下卢卡斯定理 C(n,m)%p=C(n/p,m/p)*C(n%p,m%p);

    const int MAXN=10010;
    int n,m,T,maxx;
    int fac[MAXN],inv[MAXN];
    inline int ksm(int b,int p){int cnt=1;while(p){if(p&1)cnt=cnt*b%mod;b=b*b%mod;p=p>>1;}return cnt;}
    inline void prepare()
    {
    	fac[0]=1;
    	rep(1,maxx,i)fac[i]=fac[i-1]*i%mod;
    	inv[maxx]=ksm(fac[maxx],mod-2);
    	fep(maxx-1,0,i)inv[i]=inv[i+1]*(i+1)%mod;
    }
    inline int C(int a,int b){if(b>a)return 0;return fac[a]*inv[b]%mod*inv[a-b]%mod;}
    inline int Lucas(int a,int b)
    {
    	if(b>a)return 0;
    	if(a<=maxx)return C(a,b);
    	return Lucas(a/mod,b/mod)*Lucas(a%mod,b%mod)%mod;
    }
    int main()
    {
    	freopen("1.in","r",stdin);
    	maxx=mod-1;get(T);prepare();
    	while(T--)
    	{
    		get(n);get(m);
    		put(Lucas(n,m));
    	}
    	return 0;
    }
    
  • 相关阅读:
    Jenkins
    python爬虫
    git分布式版本控制
    CKA考试认证总结
    gitlab-ci 工具链
    gitlab-ci 模板库实践
    gitlab-cicd
    gitlab配置文件gitlab.rb详解
    局部变量表中的slot简述
    JVM系统线程类型
  • 原文地址:https://www.cnblogs.com/chdy/p/12577494.html
Copyright © 2011-2022 走看看