救命才20
查看原帖
救命才20
235901
Always_Remember_It楼主2022/2/11 21:58
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <queue>
#include <bitset>
#include <stack>
#include <map>
using namespace std;
#define int long long
#define fo(a,b,c) for(int a=b;a<=c;a++)
#define of(a,b,c) for(int a=b;a>=c;a--)
const int N=2e5+10;
int t,n,m,p,fc[N]={1},in[N]={0,1};
int C(int n,int m,int p){
	if(m==0) return 1;
	if(n<p) return fc[n]*in[fc[m]*fc[n-m]%p]%p;
	return C(n/p,m/p,p)*C(n%p,m%p,p)%p;
}
signed main(){
	cin>>t;
	while(t--){
		cin>>n>>m>>p;
		memset(fc,0,sizeof(fc));
		memset(in,0,sizeof(in));
		fc[0]=in[1]=1;
		fo(i,1,N-1) fc[i]=fc[i-1]*i%p,in[i+1]=(p-p/(i+1))*in[p%(i+1)]%p;
		cout<<C(n+m,n,p)%p<<endl;
	}
	return 0;
}
2022/2/11 21:58
加载中...