0分求助
查看原帖
0分求助
740350
FS_qwq楼主2023/1/24 20:13

求大佬改错

#include<iostream>
#include<queue>
#include<algorithm>
#include<cstdlib>
using namespace std;
const int maxn=1e5+10;	
long long fac[maxn],N,M,p;	
queue<long long>ans;	
long long pow(long long a,long long b)
{
	long long ans=0;
	for(;b;b=b/2,a=a*a%p)
	{
		if(b&1)ans=ans*a%p;
	}
	return ans;	
}
long long c(long long n,long long m)	
{
	if(m>n)return 0;
	return (fac[n]*pow(fac[m],p-2)%p*pow(fac[n-m],p-2)%p);	
}	
long long Lucas(long long n,long long m)
{
	if(!m)return 1;
	return c(n%p,m%p)*Lucas(n/p,m/p)%p;	
}	
int main()
{
	ios::sync_with_stdio(false);
	int T,i;
	cin>>T;
	while(T--)
	{
		cin>>N>>M>>p;
		fac[0]=fac[1]=1;
		for(i=2;i<=p;i++)fac[i]=fac[i-1]*i%p;
		ans.push(Lucas(N+M,N));
	}
	while(!ans.empty())
	{
		cout<<ans.front()<<endl;
		ans.pop();	
	}
	return 0;
}
2023/1/24 20:13
加载中...