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;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧