求助,为什么会RE
查看原帖
求助,为什么会RE
253240
11D_Beyonder楼主2020/7/5 21:16

请问哪里会RE?

#include<iostream>
#include<cstdio>
#define N 100003
#define ll long long
using namespace std;
ll fac[N];//阶乘
ll inv[N];//逆元
int n,m,p;
inline ll qpow(ll a,ll b)
{
    ll res=1;
	while(b)
	{
		if(b&1) res=res*a%p;
		a=a*a%p;
		b>>=1;
	}
	return res;
}
inline void init()
{
 	fac[0]=1;
	int i;
	for(i=1;i<=p;i++) fac[i]=(fac[i-1]*i)%p;
}
inline ll C(int n,int m)
{
	return fac[n]*qpow(fac[n-m],p-2)%p*qpow(fac[m],p-2)%p;
}
inline ll Lucas(int n,int m)
{
	if(!m) return 1;
	return Lucas(n/p,m/p)*C(n%p,m%p)%p;
}
int main()
{
	int _;
	for(cin>>_;_;_--)
	{
		scanf("%d%d%d",&n,&m,&p);
		init();
		printf("%lld\n",Lucas(n+m,n));
	}
	return 0;
}
2020/7/5 21:16
加载中...