```cpp
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+10;
int T;
ll n, m, p, fac[N], inv[N];
ll qpow(ll a, ll b, ll p)
{
ll ans=1;
for(; b; b>>=1)
{
if(b&1) ans=ans*a%p;
a=a*a%p;
}
return ans;
}
ll C(ll n, ll m, ll p)
{
//cout<<n<<" "<<m<<endl;
// cout<<fac[n]<<" "<<inv[n-m]<<" "<<inv[m]<<endl;
return fac[n]*inv[n-m]%p*inv[m]%p;
}
ll lucas(ll n, ll m, ll p)
{
if(!m) return 1;
return C(n%p, m%p, p)*lucas(n/p, m/p, p)%p;
}
int main()
{
scanf("%d", &T);
while(T--)
{
scanf("%lld%lld%lld", &m, &n, &p);
n+=m;
fac[0]=1;
for(int i=1; i<p; i++)
fac[i]=fac[i-1]*i%p;
inv[p-1]=qpow(fac[p-1], p-2, p);
//cout<<"inv "<<inv[p-1]<<endl;
for(int i=p-2; i>=0; i--)
inv[i]=(i+1)*inv[i+1]%p;
printf("%lld\n", lucas(n, m, p));
}
return 0;
}
```
by 966123anyunchuan @ 2023-07-30 16:23:35
@[966123anyunchuan](/user/282292) 还有:
用c艹20$RE$,用c艹11$AC$?
by _Adolf_Hitler_ @ 2023-07-30 16:28:32
被某巨佬找出来了,没判n<m的情况
by 966123anyunchuan @ 2023-07-30 23:44:37