公式确认无误,求指正为什么type=1有三个点wa
查看原帖
公式确认无误,求指正为什么type=1有三个点wa
670309
cbyyx楼主2022/7/9 17:42
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define endl "\n"
const int N=3e6+10;
ll jc[N];
ll mod;
ll qpow(ll a,ll b)
{
    ll ans=1%mod;
    while(b)
    {
        if(b&1)ans=ans*a%mod;
        a=a*a%mod;
        b>>=1;
    }
    return ans;
}
void init()
{
    jc[0]=1%mod;
    for(int i=1;i<N;i++)jc[i]=jc[i-1]*i%mod;
}
ll getphi(ll n)
{
    ll ans=1;
    for(int i=2;i*i<=n;i++)
    {
        if(n%i==0)
        {
            n/=i;
            ans*=(i-1);
            while(n%i==0)n/=i,ans*=i;
        }
    }
    if(n>1)ans*=n-1;
    return ans;
}
int main()
{
    int t;
    cin>>t;
    ll n,m;
    cin>>n>>m>>mod;
    init();
    ll ans=jc[m];
    ll inv=getphi(mod)-1;
    n-=(2*m-1);
    if(n)ans=ans*jc[n+m]%mod*qpow(jc[m],inv)%mod*qpow(jc[n],inv)%mod;
    cout<<ans<<endl;
}
2022/7/9 17:42
加载中...