P3807 【模板】卢卡斯定理/Lucas 定理

纯手写(迫真)//我在写什么?

{
  #include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define NO cout << "NO" << endl;
#define YES cout << "YES" << endl;
ll gcd(ll p, ll q) {return (p % q == 0)? q : gcd(q, p % q);}
ll lcm(ll p, ll q) {return p * q / gcd(p, q);}
ll qpow(ll a, ll b, ll p) {//快速幂计算a^b mod p
    ll res = 1;
    while (b) {
        if (b & 1) res = res * a % p;
        a = a * a % p;
        b >>= 1;
    }
    return res;
}
ll C(ll n, ll m, ll p) {//C(n, m) mod p
    if (m > n) return 0; 
    ll up = 1, down = 1;
    for (ll i = 1; i <= m; i++) {
        up = up * (n - m + i) % p;//分子n*(n-1)*...*(n-m+1)
        down = down * i % p;//分母m!  I AM M
    }
    return up * qpow(down, p - 2, p) % p;//分子*分母的逆元 mod p
}
ll lucas(ll n, ll m, ll p) {
    if (m == 0) return 1;
    return C(n % p, m % p, p) * lucas(n / p, m / p, p) % p;
}
void solve() {
    ll n, m, p;cin >> n >> m >> p;
    cout << lucas(n + m, n, p) << endl;
}
int main() {
    ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
    int t;cin >> t;
    while (t--) {
        solve();
    }
    return 0;
}
    
}
posted @   土木牢盖  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示