全部RE求调
查看原帖
全部RE求调
694969
hcy1117楼主2024/8/7 14:05
#include<bits/stdc++.h>
using namespace std;
inline int read(){
	int x=0;
	char ch;
	ch=getchar();
	while(ch>=48&&ch<=57)x=x*10+ch-48,ch=getchar();
	return x;
}
void write(int x){
	if(x>9)write(x/10);
	putchar(x%10+48);
}
int t,p;
int jc[100005];
inline int ksm(int x,int k){
	int ans=1;
	while(k){
		if(k&1)ans=ans*x%p;
		x=x*x%p,k>>=1;
	}
	return ans;
}
inline void init(){
	jc[0]=1;
	for(int i=1;i<=p;i++)jc[i]=jc[i-1]*i%p;
}
inline int c(int n,int m){
	if(n<m)return 0;
	return jc[n]*ksm(jc[m],p-2)%p*ksm(jc[n-m],p-2)%p; 
}
inline int lucas(int n,int m){
	if(!m)return 1;
	return lucas(n/p,m/p)*c(n%p,m%p)%p;
}
int n,m;
int main(){
	t=read();
	while(t--){
		n=read(),m=read(),p=read();
		init();
		int ans=lucas(n+m,n);
		write(ans),puts("");
	}
}
2024/8/7 14:05
加载中...