求助80分WA on #1
  • 板块学术版
  • 楼主Executor_Dragon
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/8/22 15:44
  • 上次更新2023/11/3 01:58:45
查看原帖
求助80分WA on #1
464142
Executor_Dragon楼主2023/8/22 15:44

P3807 代码:

#include<bits/stdc++.h>
using namespace std;
int p;
long long inv[2000050]={0,1},f[1000000];
long long fac(int x)
{
    if(!x) return 1;
    if(f[x]) return f[x];
    long long ans=1;
    for(int i=1;i<=x;i++)
    {
        ans*=i;
        ans%=p;
    }
    return f[x]=ans;
}
int C(int n,int m)
{
    if(m>n) return 0;
    return fac(n)*inv[fac(m)]%p*inv[fac(n-m)]%p;
}
int lucas(int n,int m)
{
    return m==0?1:C(n%p,m%p)*lucas(n/p,m/p)%p;
}
int main()
{
    int n,m,t;
    cin>>t;
    for(int i=1;i<=t;i++)
    {
        cin>>n>>m>>p;
        for(int i=2;i<=n+m;i++)
            inv[i]=(long long)(p-p/i)*inv[p%i]%p;
        cout<<lucas(n+m,n)<<'\n';
    }
  return 0;
}

因为题目版没人看只好发到这里了。

2023/8/22 15:44
加载中...