1 条题解

  • 0
    @ 2023-8-2 20:26:34

    Sol

    Cnmmodp{\mathrm{C}}_n^m \bmod{p} 是卢卡斯定理,p不是质数的情况要用拓展卢卡斯定理。

    Code

    #include<bits/stdc++.h>  
    using namespace std;  
    typedef long long ll;  
    ll exgcd(ll a,ll b,ll &x,ll &y)  
    {  
        if(!b){x=1;y=0;return a;}  
        ll res=exgcd(b,a%b,x,y),t;  
        t=x;x=y;y=t-a/b*y;  
        return res;  
    }  
    ll p;  
    ll power(ll a,ll b,ll mod)  
    {
        ll sm;  
        for(sm=1;b;b>>=1,a=a*a%mod)if(b&1)  
        sm=sm*a%mod;  
        return sm;  
    }  
    ll fac(ll n,ll pi,ll pk)  
    {  
        if(!n)return 1;  
        ll res=1;  
        for(ll i=2;i<=pk;++i)  
        if(i%pi)(res*=i)%=pk;  
        res=power(res,n/pk,pk);  
        for(ll i=2;i<=n%pk;++i)  
        if(i%pi)(res*=i)%=pk;  
        return res*fac(n/pi,pi,pk)%pk;  
    }  
    ll inv(ll n,ll mod)  
    {  
        ll x,y;  
        exgcd(n,mod,x,y);  
        return (x+=mod)>mod?x-mod:x;  
    }  
    ll CRT(ll b,ll mod){return b*inv(p/mod,mod)%p*(p/mod)%p;}  
    const int MAXN=11;  
    ll n,m;  
    ll w[MAXN];  
    ll C(ll n,ll m,ll pi,ll pk)  
    {  
        ll up=fac(n,pi,pk),d1=fac(m,pi,pk),d2=fac(n-m,pi,pk);  
        ll k=0;  
        for(ll i=n;i;i/=pi)k+=i/pi;  
        for(ll i=m;i;i/=pi)k-=i/pi;  
        for(ll i=n-m;i;i/=pi)k-=i/pi;  
        return up*inv(d1,pk)%pk*inv(d2,pk)%pk*power(pi,k,pk)%pk;  
    }  
    ll exlucus(ll n,ll m)  
    {  
        ll res=0,tmp=p,pk;  
        int lim=sqrt(p)+5;  
        for(int i=2;i<=lim;++i)if(tmp%i==0)  
        {  
            pk=1;while(tmp%i==0)pk*=i,tmp/=i;  
            (res+=CRT(C(n,m,i,pk),pk))%=p;  
        }  
        if(tmp>1)(res+=CRT(C(n,m,tmp,tmp),tmp))%=p;  
        return res;  
    }  
    int main()  
    {  
        ll n1,m1;  
        scanf("%lld%lld%lld%lld%lld",&n,&m,&p,&n1,&m1);  
        ll ans=exlucus(n,m);  
        scanf("%lld",&p);  
        printf("%lld\n",max(exlucus(n1,m1),ans));  
        return 0;  
    }  
    

    信息

    ID
    729
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    (无)
    递交数
    30
    已通过
    7
    上传者