#include<iostream>
using namespace std;
typedef pair<int,int>PII;
const int N=1e5+5,M=1e5+5,INF=0x3f3f3f3f,Mod=1e9+7;
const double eps=1e-8;
typedef long long ll;
ll a,b;
int n,p;
int ksm(int x,int y,int p){
    int res=1;
    while(y){
        if(y&1)res=(ll)res*x%p;
        x=(ll)x*x%p;
        y>>=1;
    }
    return res;
}
int c(int a,int b,int p){
    if(b>a)return 0;
    int res=1;
    for(int i=1,j=a;i<=b;++i,--j){
        res=(ll)res*j%p;
        res=(ll)res*ksm(i,p-2,p)%p;
    }
    return res;
}
int Lucas(ll a,ll b,int p){
    if(a<p&&b<p)return c(a,b,p);
    return (ll)c(a%p,b%p,p)*Lucas(a/p,b/p,p)%p;
}
int main(){
    ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);
    cin>>n;
    while(n--){
        cin>>a>>b>>p;
        cout<<Lucas(a,b,p)<<'\n';
    }
    return 0;
}
posted on 2023-08-01 21:16  IR101  阅读(6)  评论(0编辑  收藏  举报  来源